数据结构-单链表实验报告.doc

数据结构-单链表实验报告.doc

ID:55584509

大小:56.50 KB

页数:6页

时间:2020-05-19

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

《数据结构-单链表实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、单链表实验报告一、实验目的1、帮助读者复习C++语言程序设计中的知识。2、熟悉线性表的逻辑结构。3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。二、实验内容[问题描述]实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。[基本要求](1)依次从键盘读入数据,建立带头结点的单链表;(2)输出单链表中的数据元素(3)求单链表的长度;(4)根据指定条件能够取元素和修改元素;(5)实现在指定位置插入和删除元素的功能。三、算法设计(1)建立带表头结点的单链表;首先输入结束标志,然后建立循环逐个输入数据,直到输入结束标志。(2)输出单链

2、表中所有结点的数据域值;首先获得表头结点地址,然后建立循环逐个输出数据,直到地址为空。(3)输入x,y在第一个数据域值为x的结点之后插入结点y,若无结点x,则在表尾插入结点y;建立两个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,建立循环扫描链表。当当前结点指针域不为空且数据域等于x的时候,申请结点并给此结点数据域赋值为y,然后插入当前结点后面,退出函数;当当前结点指针域为空的时候,申请结点并给此结点数据域赋值为y,插入当前结点后面,退出函数。(4)输入k,删除单链表中所有的结点k,并输出被删除结点的个数。建立三个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点

3、,最后一个备用;建立整形变量l=0;建立循环扫描链表。当当前结点指针域为空的时候,如果当前结点数据域等于k,删除此结点,l++,跳出循环,结束操作;如果当前结点数据域不等于k,跳出循环,结束操作。当当前结点指针域不为空的时候,如果当前结点数据域等于k,删除此结点,l++,继续循环操作;如果当前结点数据域不等于k,指针向后继续扫描。循环结束后函数返回变量l的值,l便是删除的结点的个数。四、实验结果1、新建一个链表:2、输出链表的数据:(4)插入数据:在数据为3后面插入一个数据100:(5)删除数据:删除刚刚插入的数据100:五、总结实验之前由于准备不够充分,所以堂上实验时只完成了建立单链

4、表和数据的输出,而后面两个实验要求也是用来很多时间长完成的。以后做实验前,一定要做好充分的准备,有一个清晰的思路,遇到更复杂的实验也一定能轻松完成。六、源代码#include"stdio.h"#include"conio.h"#defineDataTypeinttypedefstructnode{DataTypedata;structnode*link;}LNode;LNode*h;LNode*createtail(){LNode*s,*r;intx,tag;system("cls");printf("inputthesignofending:");scanf("%d",&tag);h

5、=(LNode*)malloc(sizeof(LNode));h->data=tag;r=h;printf("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;}voidoutput(LNode*h){LNode*r;inti;system("cls");r=h;for(i=0;r->link!=NULL;i++){printf("data[%d]=%d",i

6、,r->link->data);r=r->link;}getch();}voidinsert(LNode*h){LNode*r,*s;intx,y;system("cls");printf("Inputthedatathatyouwanttoinsert:");printf("x=");scanf("%d",&x);printf("y=");scanf("%d",&y);r=h;r=r->link;for(;;r=r->link){if(r->data==x){s=(LNode*)malloc(sizeof(LNode));s->data=y;s->link=r->link;r->

7、link=s;break;}if(r->link==NULL){s=(LNode*)malloc(sizeof(LNode));s->data=y;s->link=NULL;r->link=s;break;}}}intdel(LNode*h){LNode*r,*s,*t;intk,l=0;system("cls");printf("Inputthedatathatyouwanttodelete:");scanf("%d",&k);r=h;s=r

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

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

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