单链表-实验报告.doc

单链表-实验报告.doc

ID:59361158

大小:142.00 KB

页数:11页

时间:2020-09-04

单链表-实验报告.doc_第1页
单链表-实验报告.doc_第2页
单链表-实验报告.doc_第3页
单链表-实验报告.doc_第4页
单链表-实验报告.doc_第5页
资源描述:

《单链表-实验报告.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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。