1、软基上机报告链表基础题ex2_1基本题1)首先创建一个单链表:从键盘读入五个整数,按输入顺序形成单链表。将创建好的链表元素依次输出到屏幕上。2)在已创建好的链表中插入一个元素:从键盘读入元素值和插入位置,调用插入函数完成插入操作。然后将链表元素依次输出到屏幕上。3)在已创建好的链表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。然后将链表元素依次输出到屏幕上。1、程序流程说明1)创建一个单链表:从键盘读入五个整数,按输入顺序形成单链表。将创建好的链表元素依次输出到屏幕上。2)在已创建好的链表中插入一个元素:从键盘读入元素值和插入位置,调用插入函数完成插入操作。然后
2、将链表元素依次输出到屏幕上。(让插入位前一位的指针指向新增结点,新增结点指针指向插入位置原结点,同时length加一)3)在已创建好的链表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。然后将链表元素依次输出到屏幕上。(让插入位置前一结点指针指向下一结点,length减一,其余不变)二、程序代码 #include#include#includetypedef struct Node int data; struct Node *link;node;typedef struct List node *head; node *tail; int length;list
3、;void 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(in
4、t new_node) node * 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=cre
5、ate_node(x); if(loc=3&loc=5) for(i=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;
6、 for(i=1;i length;i+) x=temp-data; printf(%d ,x); temp=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-
7、head; for(i=2;ilink; t=temp-link; temp-link=t-link; if(loc=table-length) 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);三、测试
8、数据* 输入:请输入第5个元素:23请输入第4个元素:6请输入第3个元素:1请输入第2个元素:0请输入第1个元素:45请输入插入位置:3请输入插入元素:12请输入删除位置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 六 、小结 体会*:可以改变一下让输入不只五位,同时可以考虑实现增加或删除多个元素。THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2