欢迎来到天天文库
浏览记录
ID:59361158
大小:142.00 KB
页数:11页
时间:2020-09-04
《单链表-实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单链表实验报告一、实验目的与要求1、实现单链表的建立;2、掌握单链表的插入、删除和查找运算;3、熟练进行C语言源程序的编辑调试。二、实验内容(1)建立带表头结点的单链表;首先输入结束标志,然后建立循环逐个输入数据,直到输入结束标志。数据输入的函数为:LNode*createtail(){LNode*s,*r;intx,tag;printf("inputthesignofending:");/*输入结束标志*/scanf("%d",&tag);h=(LNode*)malloc(sizeof(LNode));/*建立表头结点*/h->data=tag;r=h;printf
2、("inputthedata:");scanf("%d",&x);while(x!=tag)/*建立循环逐个输入数据*/{s=(LNode*)malloc(sizeof(LNode));s->data=x;r->link=s;r=s;scanf("%d",&x);}r->link=NULL;returnh;}(2)输出单链表中所有结点的数据域值;首先获得表头结点地址,然后建立循环逐个输出数据,直到地址为空。数据输出的函数为:voidoutput(LNode*h){LNode*r;inti;r=h;for(i=1;r->link!=NULL;i++){printf("%
3、d.%d",i,r->link->data);r=r->link;}}(3)输入x,y在第一个数据域值为x的结点之后插入结点y,若无结点x,则在表尾插入结点y;建立两个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,建立循环扫描链表。当当前结点指针域不为空且数据域等于x的时候,申请结点并给此结点数据域赋值为y,然后插入当前结点后面,退出函数;当当前结点指针域为空的时候,申请结点并给此结点数据域赋值为y,插入当前结点后面,退出函数。数据插入函数为:voidinsert(LNode*h){LNode*r,*s;intx,y;printf("Inputthe
4、datathatyouwanttoinsert:");printf("x=");scanf("%d",&x);/*输入x值*/printf("y=");scanf("%d",&y);/*输入y值*/r=h;r=r->link;for(;;r=r->link){if(r->data==x)/*当当前结点指针域不为空且数据域等于x的时候…*/{s=(LNode*)malloc(sizeof(LNode));s->data=y;s->link=r->link;r->link=s;break;}if(r->link==NULL)/*当当前结点指针域为空的时候*/{s=(L
5、Node*)malloc(sizeof(LNode));s->data=y;s->link=NULL;r->link=s;break;}}}(4)输入k,删除单链表中所有的结点k,并输出被删除结点的个数。建立三个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,最后一个备用;建立整形变量l=0;建立循环扫描链表。当当前结点指针域为空的时候,如果当前结点数据域等于k,删除此结点,l++,跳出循环,结束操作;如果当前结点数据域不等于k,跳出循环,结束操作。当当前结点指针域不为空的时候,如果当前结点数据域等于k,删除此结点,l++,继续循环操作;如果当前结点数据域
6、不等于k,指针向后继续扫描。循环结束后函数返回变量l的值,l便是删除的结点的个数。数据删除函数为:intdel(LNode*h){LNode*r,*s,*t;intk,l=0;printf("Inputthedatathatyouwanttodelete:");scanf("%d",&k);r=h;s=r;r=r->link;for(;;){if(r->link==NULL)/*当当前结点指针域为空的时候*/{if(r->data==k)/*如果当前结点数据域不等于k…*/{l++;s->link=NULL;free(r);break;}elsebreak;/*如果当
7、前结点数据域等于k…*/}else/*当当前结点指针域不为空的时候*/{if(r->data==k)/*如果当前结点数据域不等于k…*/{l++;t=r;s->link=t->link;r=t->link;free(t);}else{r=r->link;s=s->link;}/*如果当前结点数据域不等于k…*/}}returnl;}完整的源程序为:#include"stdio.h"#include"conio.h"#defineDataTypeinttypedefstructnode{DataTypedata;structnode*link;}LNo
此文档下载收益归作者所有