链表基本操作实验报告.doc

链表基本操作实验报告.doc

ID:52194722

大小:112.00 KB

页数:9页

时间:2020-03-24

链表基本操作实验报告.doc_第1页
链表基本操作实验报告.doc_第2页
链表基本操作实验报告.doc_第3页
链表基本操作实验报告.doc_第4页
链表基本操作实验报告.doc_第5页
资源描述:

《链表基本操作实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验2链表基本操作实验一、实验目的1.定义单链表的结点类型。2.熟悉对单链表的一些基本操作和具体的函数定义。3.通过单链表的定义掌握线性表的链式存储结构的特点。二、实验内容与要求该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。要求:同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。三、算法分析与设计

2、。1.创建单链表:LinkedListLinkedListCreat()创建链表函数LinkedListL=LinkedListInit(),p,r;调用初始化链表函数r=L;r指向头结点使用malloc函数动态分配存储空间,指针p指向新开辟的结点,并将元素存放到新开辟结点的数据域,p=(LinkedList)malloc(sizeof(LNode));p->data=x;r->next=p;将新的结点链接到头结点r之后r=p;r指向p结点scanf("%d",&x);满足条件循环输入链表元素while(x!=flag)当输入不为-1时循环r->

3、next=NULL;returnL;将链表结尾赋空值,返回头结点L^头结点LA1A2L^An......2.单链表插入voidLinkedListInsert(LinkedListL,inti,ElemTypex)链表插入函数(L头指针,i插入位置,x插入元素)LinkedListp,s;定义结构体类型指针p,sj=1;p=L;定义整型j计数,寻找插入位置,p指针指向头结点p=p->next;j++;满足条件时p指针后移,j自加1while(p&&j

4、

5、j

6、(LNode*)malloc(sizeof(LNode));使用malloc函数动态分配存储空间,指针s指向新开辟的结点,并将插入元素x存放到新开辟结点s的数据域,将结点s指向i+1结点位置,第i个结点指向s,实现了链表元素插入。bpaxss->data=x;s->next=p->next;p->next=s;3.单链表的删除:bcpp->next=p->next->next;三、运行结果1.单链表初始化2.创建单链表3.求链表长度4.检查链表是否为空5.遍历链表6.从链表中查找元素7.从链表中查找与给定元素值相同的元素在顺序表中的位置1.向链表

7、中插入元素插入元素之后的链表2.从链表中删除元素删除位置为6的元素(是3)3.清空单链表三、实验体会经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程序做了仔细的分析,对单链表创建、插入、删除算法画了详细的N-S流程图。三、C语言版原代码#include#include/*定义Elem

8、Type为int类型*/typedefintElemType;#defineTRUE1#defineFALSE0#defineNULL0#defineflag-1/*单链表的结点类型*/typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkedList;/*初始化单链表*/LinkedListLinkedListInit(){LinkedListL;L=(LinkedList)malloc(sizeof(LNode));L->next=NULL;returnL;}/*清空单链表*

9、/voidLinkedListClear(LinkedListL){L->next=NULL;printf("链表已经清空");}/*检查单链表是否为空*/intLinkedListEmpty(LinkedListL){if(L->next==NULL)returnTRUE;elsereturnFALSE;}/*遍历单链表*/voidLinkedListTraverse(LinkedListL){LinkedListp;p=L->next;if(p==NULL)printf("单链表为空表");else{printf("链表中的元素为:

10、n");while(p!=NULL){printf("%d",p->data);p=p->next;}}printf("");}in

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

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

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