《软基上机报告-链表(基础题)(共5页).doc》由会员分享,可在线阅读,更多相关《软基上机报告-链表(基础题)(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上ex2_1基本题1)首先创建一个单链表:从键盘读入五个整数,按输入顺序形成单链表。将创建好的链表元素依次输出到屏幕上。2)在已创建好的链表中插入一个元素:从键盘读入元素值和插入位置,调用插入函数完成插入操作。然后将链表元素依次输出到屏幕上。3)在已创建好的链表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。然后将链表元素依次输出到屏幕上。1、 程序流程说明1)创建一个单链表:从键盘读入五个整数,按输入顺序形成单链表。将创建好的链表元素依次输出到屏幕上。2)在已创建好的链表中插入一个元素:从键盘读入元素值和插入位置,调用插入函数完成插入操作
2、。然后将链表元素依次输出到屏幕上。(让插入位前一位的指针指向新增结点,新增结点指针指向插入位置原结点,同时length加一)3)在已创建好的链表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。然后将链表元素依次输出到屏幕上。(让插入位置前一结点指针指向下一结点,length减一,其余不变)二、程序代码#include#include#includetypedef struct Nodeint data;struct Node *link;node;typedef struct Listnode *head;node *tail;int length;list;vo
3、id creat_list(list *table)int x,i;node *temp;table-head=NULL;table-tail=NULL;for(i=5;i=1;i-)printf(请输入第%d个元素:,i);fflush(stdin);scanf(%d,&x);printf(n);temp=(node*)malloc(sizeof(node);temp-data=x;temp-link=NULL;temp-link=table-head;table-head=temp;table-length=5;node * create_node(int new_node)node *
4、temp;temp = (node*)malloc(sizeof(node);temp-data = new_node;temp-link = NULL;return temp;void get(list *table)int loc,x,i;node *temp;node *newnode;temp=table-head;printf(n请输入插入位置:);scanf(%d,&loc);printf(请输入插入元素:);scanf(%d,&x);if(loctable-length|loclength+;newnode=create_node(x);if(loc=3&loc=5)for(i=
5、2;ilink;newnode-link = temp-link; temp-link = newnode;if(loc=1)newnode-link=table-head;table-head=newnode;if(loc=2)temp=table-head;newnode-link = temp-link; temp-link = newnode;void show_list(list *table)int x,i;node *temp;printf(链表为:n);temp=table-head;for(i=1;i length;i+)x=temp-data;printf(%d ,x);t
6、emp=temp-link;void delete_node(list *table)int loc,i;node *temp,*t;temp=table-head;printf(n请输入删除位置);scanf(%d,&loc);if(loctable-length)printf(删除出错);else table-length-;if(loc=1)temp=temp-link;table-head=temp;if(loc2&loclength)temp=table-head;for(i=2;ilink;t=temp-link;temp-link=t-link; if(loc=table-len
7、gth)for(i=2;ilink; temp-link=NULL;if(loc=2)temp=table-head;t=temp-link;temp-link=t-link;void main()list table;creat_list(&table);show_list(&table);get(&table);show_list(&table);delete_node(&table);show_list(&table);三、测试数据* 输入:请输入第5个元素:23请输入第4个元素:6请输入第3个元素:1请输入第2个元素:0请输入第1个元素:45请输入插入位置:3请输入插入元素:12请输入
8、删除位置1 应输出(上机前自己分析的结果):链表为:45 0 1 6 23链表为:45 0 12 1 6 23链表为:0 12 1 6 23 四、上机时遇到的问题(可分为编译问题和逻辑问题)*问题现象: 运行超出范围 原因:i,j值选取出现问题; 解决办法:通过改变循环的值来实现正确解问题现象: 增加元素之后仍然只能输出五位值 原因:show_list函数输出五位,而非length位; 解决办法:改变show_list函数五、实际运行结果: 链表为:45 0 1 6 23链表为:45 0 12 1 6 23链表为:0 12 1 6 23 六 、小结 体会*:可以改变一下让输入不只五位,同时可以考虑实现增加或删除多个元素。专心-专注-专业