创建单链表并实现逆置.doc

创建单链表并实现逆置.doc

ID:56904409

大小:35.02 KB

页数:9页

时间:2020-07-21

创建单链表并实现逆置.doc_第1页
创建单链表并实现逆置.doc_第2页
创建单链表并实现逆置.doc_第3页
创建单链表并实现逆置.doc_第4页
创建单链表并实现逆置.doc_第5页
资源描述:

《创建单链表并实现逆置.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、武汉大学实验报告资源与环境科学院系地理信息系统专业2013年12月22号实验名称单链表的创建和逆置指导老师游涟姓名冯萱班级地信三班学号2012301130082成绩一、实验原理利用单链表的节点和指针对单链表实现一系列的操作,包括单链表的定义、创建、测长、插入、删除、取元素、撤销单链表、逆置单链表等函数。二、实验目的掌握线性表的链式存储结构——单链表的定义及C语言实现;掌握线性表在链式存储结构——单链表中的各种基本操作。三、实验内容及步骤1、把节点结构体的建立和一些实现函数放到了头文件SLNOde头文件里,头文件主要包括以下几个函数:1:创建节点

2、结构体:typedefstructNode{DataTypedata;structNode*next;}SLNode;2、初始化单链表函数:voidListInitiate(SLNode**head)//初始化头指针和头结点//{if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);//头指针指向头结点,并为头结点申请内存空间//(*head)->next=NULL;//置结束标记//}3、求单链表的长度:intListLength(SLNode*head)//求数据个数//{SLNo

3、de*p=head;//p指向头结点//intsize=0;while(p->next!=NULL)//循环计数//{p=p->next;size++;}returnsize;}4、插入数据函数:intListInsert(SLNode*head,inti,DataTypex)//在第i个节点上插入一个数字x,并以1说明插入成功//{SLNode*p,*q;//p指向地i-1个结点,q用来放x//intj;//用来找第i个//p=head;//p指向头结点//j=-1;while(p->next!=NULL&&j

4、-1个结点//{p=p->next;j++;}if(j!=i-1)//判断是否在i前就空了//{printf("插入数据出错!");return0;}if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);//给插入的数据一个结点空间//q->data=x;//把数据给结点//q->next=p->next;//把指针给结点//p->next=q;//把结点的地址给前一个//return1;}5、删除数据元素函数:intListDelete(SLNode*head,inti,DataType*x

5、)//删除第i个节点,并有x带回,其中成功返回一//{SLNode*p,*s;//p用来找第i-1个位置,s用来指向i//intj;p=head;j=-1;while(p->next!=NULL&&p->next->next!=NULL&&jnext;j++;}if(j!=i-1)//判断是否在i前就空了//{printf("删除位置错误");return0;}s=p->next;//s指向i//*x=s->data;//取i的数值给x//p->next=p->next->next;

6、//把i+1的地址给i的指针//free(s);//s结点释放,即删除//return1;}6、取链表的元素函数:intListGet(SLNode*head,inti,DataType*x)//去链表中的元素//{SLNode*p;//指向i-1的位置//intj;//判断是否在i之前就空了//p=head;j=-1;while(p->next!=NULL&&jnext;j++;}if(j!=i)//i前就空了//{printf("元素位置错误");return0;}*x=p->data;//成功并返回一说明//retu

7、rn1;}7、释放单链表函数:voidDestory(SLNode**head)//释放动态内存单链表//{SLNode*p,*p1;//p1区释放呢//p=*head;while(p!=NULL){p1=p;p=p->next;free(p1);}*head=NULL;//释放head结点的内存//}8、就地逆置单链表函数:voidJiudiReserve(SLNode*head)//对带头结点的单链表L实现就地逆置//{SLNode*curr,*next;curr=head->next;head->next=NULL;while(curr!

8、=NULL){next=curr->next;curr->next=head->next;head->next=curr;curr=next;}}9、

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

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

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