- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
实验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-next=NULL;returnL;将链表结尾赋空值,返回头结点L
^
头结点L
A1
A1
A2
L
^
^
An
、、、、、、
2、单链表插入
voidLinkedListInsert(LinkedListL,inti,ElemTypex)链表插入函数
(L头指针,i插入位置,x插入元素)
LinkedListp,s;定义结构体类型指针p,s
j=1;p=L;定义整型j计数,寻找插入位置,p指针指向头结点
p=p-〉next;j++;满足条件时p指针后移,j自加1
while(pj<i)当p为真且j〈i时循环
p=NULL||j〈i
Y
N
printf(”插入位置不正确\n”);
s=(LNode*)malloc(sizeof(LNode));
使用malloc函数动态分配存储空间,指针s指向新开辟得结点,并将插入元素x存放到新开辟结点s得数据域,将结点s指向i+1结点位置,第i个结点指向s,实现了链表元素插入。
b
b
a
a
x
x
s
s—>data=x;s—next=p—〉next;p-next=s;
3、单链表得删除:
b
b
c
p—next=p—next-next;
运行结果
单链表初始化
创建单链表
求链表长度
检查链表就是否为空
遍历链表
从链表中查找元素
从链表中查找与给定元素值相同得元素在顺序表中得位置
向链表中插入元素
插入元素之后得链表
从链表中删除元素
删除位置为6得元素(就是3)
清空单链表
实验体会
经过这次单链表基本操作实验,自己得编程能力有了进一步得提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活得表达出自己得想法,虽然在打完源代码之后出现了一些错误,但就是经过认真查找、修改,最终将错误一一修正,主要就是在写算法分析得时候出现了障碍,经过从网上查找资料,自己也对程序做了仔细得分析,对单链表创建、插入、删除算法画了详细得N-S流程图。
C语言版原代码
#include<stdio、h〉
#include<stdlib、h
/*定义ElemType为int类型*/
typedefintElemType;
#defineTRUE1
#defineFALSE0
#defineNULL0
#defineflag—1
/*单链表得结点类型*/
typedefstructLNode
{
ElemTypedata;
structLNode*next;
}LNode,*LinkedList;
/*初始化单链表*/
LinkedListLinkedListInit()
{LinkedListL;
L=(LinkedList)malloc(sizeof(LNode));
L-〉next=NULL;
returnL;
}
/*清空单链表*/
voidLinkedListClear(LinkedListL)
{L—〉next
文档评论(0)