软基上机报告-链表(拓展题).doc
- 文档编号:1718824
- 上传时间:2022-10-23
- 格式:DOC
- 页数:18
- 大小:54.50KB
软基上机报告-链表(拓展题).doc
《软基上机报告-链表(拓展题).doc》由会员分享,可在线阅读,更多相关《软基上机报告-链表(拓展题).doc(18页珍藏版)》请在冰豆网上搜索。
一、程序流程说明
二、1)创建一个单链表,其数据元素为整数,从键盘输入,输入0结束(注意0不放到链表内);
三、2)从键盘任意输入一个整数,在单链表中查询该数,如果单链表中已经存在这个数,就调用删除函数,删除该元素所在结点,并将单链表在删除前后的数据元素依次输出到屏幕上;
四、如果单链表中不存在这个数,就调用插入函数,将这个数插入到单链表尾,并将单链表在插入前后的数据元素依次输出到屏幕上。
五、3)教材第一章习题第9题(用链表实现)ex2_3——扩展题
六、1)删除单链表中全部的负数
七、2)创建一个双向链表,按照冒泡排序的思路对这个双向链表进行排序,打印排序结果。
注意,本算法在交换元素时是将链点整个交换而不是将链点中的元素值交换。
八、
九、
十、
十一、
2_2
1)创建一个单链表,其数据元素为整数,从键盘输入,输入0结束(注意0不放到链表内);(ifx!
=0,scanf)
2)从键盘任意输入一个整数,在单链表中查询该数,如果单链表中已经存在这个数,就调用删除函数,删除该元素所在结点,并将单链表在删除前后的数据元素依次输出到屏幕上;(search返回重复的位置,然后删除(同实验一))
如果单链表中不存在这个数,就调用插入函数,将这个数插入到单链表尾,并将单链表在插入前后的数据元素依次输出到屏幕上。
(同实验一,直接加在链表末尾)
3)判断插入元素与表内元素的大小,如temp->data
2_3
1)删除单链表中全部的负数(逐个判断是不是负数,并且返回负数所在位置,删除过春哥同实验一)
2)创建一个双向链表,按照冒泡排序的思路对这个双向链表进行排序,打印排序结果。
注意,本算法在交换元素时是将链点整个交换而不是将链点中的元素值交换。
(从一开始逐个比较,将比第一位大的与第一位交换位置,一直比较到最后一位然后开始对于第二位重复比较)
二、程序代码
2_2
#include
#include
#include
typedefstructNode{
intdata;
structNode*link;
}node;
typedefstructList{
node*head;
node*tail;
intlength;
}list;
voidcreat_list(list*table)
{
intx,i;
node*temp;
table->head=NULL;
table->tail=NULL;
table->length=0;
x=1;
scanf("%d",&x);
for(i=0;x!
=0;i++)
{
fflush(stdin);
printf("\n");
temp=(node*)malloc(sizeof(node));
temp->data=x;
temp->link=NULL;
temp->link=table->head;
table->head=temp;
table->length++;
scanf("%d",&x);
}
}
node*create_node(intnew_node)
{
node*temp;
temp=(node*)malloc(sizeof(node));
temp->data=new_node;
temp->link=NULL;
returntemp;
}
voidget(list*table,intn)
{
inti,loc=table->length+1;
node*temp;
node*newnode;
temp=table->head;
table->length++;
newnode=create_node(n);
for(i=2;i { temp=temp->link; } newnode->link=temp->link; temp->link=newnode; } voidshow_list(list*table) { intx,i; node*temp; printf("链表为: \n"); temp=table->head; for(i=1;i<=table->length;i++) { x=temp->data; printf("%d",x); temp=temp->link; } } voiddelete_node(list*table,intn) { inti; node*temp,*t; temp=table->head; if(n==1) { temp=temp->link; table->head=temp; } if(n>2&&n { temp=table->head; for(i=2;i temp=temp->link; t=temp->link; temp->link=t->link; } if(n==table->length) { for(i=2;i temp=temp->link; temp->link=NULL; } if(n==2) { temp=table->head; t=temp->link; temp->link=t->link; } table->length--; } voidsearch(list*table,intx,inta[2]) { inti=0,j=0; node*temp; temp=table->head; for(i=1;i<=table->length;i++) { if(x==temp->data) {a[1]=i; j++; } temp=temp->link; } if(j==0) {a[0]=0; a[1]=0;} else a[0]=1; } voidmain() { listtable; intm,a[2]; creat_list(&table); show_list(&table); printf("\n输入一个整数\n"); scanf("%d",&m); search(&table,m,a); if(a[0]==1) { delete_node(&table,a[1]); show_list(&table); } else{ get(&table,m); show_list(&table); } } 2_2(3) #include #include #include typedefstructNode{ intdata; structNode*link; }node; typedefstructList{ node*head; node*tail; intlength; }list; voidcreat_list(list*table) { intx,i; node*temp; table->head=NULL; table->tail=NULL; table->length=0; x=1; scanf("%d",&x); for(i=0;x! =0;i++) { fflush(stdin); printf("\n"); temp=(node*)malloc(sizeof(node)); temp->data=x; temp->link=NULL; temp->link=table->head; table->head=temp; table->length++; scanf("%d",&x); } } node*create_node(intnew_node) { node*temp; temp=(node*)malloc(sizeof(node)); temp->data=new_node; temp->link=NULL; returntemp; } voidget(list*table,intn) { inti,m=0; node*temp; node*newnode; temp=table->head; table->length++; newnode=create_node(n); if(n { newnode->link=temp; temp=newnode; } else for(i=1;m==0;i++) { if(i<=table->length&&temp->data { newnode->link=temp->link; temp->link=newnode; m=1; } elseif(i==table->length) { temp->link=newnode; newnode->link=NULL; m=1; } temp=temp->link; } table->length++; } voidshow_list(list*table) { intx,i; node*temp; printf("链表为: \n"); temp=table->head; for(i=1;i<=table->length;i++) { x=temp->data; printf("%d",x); temp=temp->link; } } voidmain() { listtable; intm,a[2]; creat_list(&table); show_list(&table); printf("\n输入一个整数\n"); scanf("%d",&m); get(&table,m); show_list(&table); } 2_3 (1) #include #include #include typedefstructNode{ intdata; structNode*link; }node; typedefstructList{ node*head; node*tai
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 报告 链表 拓展
![提示](https://static.bdocx.com/images/bang_tan.gif)