数据结构单链表实验报告Word下载.docx
- 文档编号:22605024
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:8
- 大小:50.43KB
数据结构单链表实验报告Word下载.docx
《数据结构单链表实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构单链表实验报告Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
实验条件:
计算机一台,VisualC++6.0
实验内容:
1.问题描述
以单链表为存储结构实现以下基本操作:
(1)在第i个元素前插入一个新元素。
(2)查找值为x的某个元素。
若成功,给出x在表中的位置;
不成功给出提示信息。
(3)删除第i个元素,若成功,给出提示信息并显示被删元素的值;
不成功给出失败的提示信息。
2.数据结构类型定义
typedefstructLinkNode
{
intValue;
structLinkNode*Next;
}Node,*LinkList;
3.模块划分
(1)初始化链表:
voidInitList(LinkList*L);
(2)创建链表:
尾插法:
intCreateFromTail(LinkListL);
(3)在指定位置插入元素:
intInsList(LinkListL,inti,inte);
(4)在指定位置删除元素:
intDelList(LinkListL,inti,int*e);
返回值说明:
返回ERROR插入失败,返回OK插入成功;
(5)按位置查找链表元素:
intGetList(LinkListL,inti,int*e);
4.详细设计
voidinit_linklist(LinkList*l)/*对单链表进行初始化*/{
while(flag)/*循环输入表中元素值,将建立新结点s插入表尾*/
{
c=getchar();
if(c!
='
$'
)
{
s=(Node*)malloc(sizeof(Node));
s->
data=c;
r->
next=s;
r=s;
}
else
flag=0;
next=NULL;
/*将最后一个结点的next链域置为空,表示链表的结束*/
}
}
Node*Get(LinkListL,inti)
/*在带头结点的单链表L中查找第i个结点,若找到(1≤i≤n),则返回该结点的存储位置;
否则返回NULL*/
{
intj;
Node*p;
p=L;
j=0;
/*从头结点开始扫描*/
while((p->
next!
=NULL)&
&
(j<
i))
{
p=p->
next;
/*扫描下一结点*/
j++;
/*已扫描结点计数器*/
}
if(i==j)
returnp;
/*找到了第i个结点*/
else
returnNULL;
/*找不到,i≤0或i>
n*/
Node*Locate(LinkListL,ElemTypekey)
/*在带头结点的单链表L中查找其结点值等于key的结点,若找到则返回该结点的位置p,否则返回NULL*/
p=L->
/*从表中第一个结点开始*/
while(p!
=NULL)
if(p->
data!
=key)
p=p->
else
break;
/*找到结点值=key时退出循环*/
returnp;
intInsList(LinkListL,inti,ElemTypee)
/*在带头结点的单链表L中第i个位置插入值为e的新结点s*/
Node*pre,*s;
intk;
pre=L;
k=0;
/*从"
头"
开始,查找第i-1个结点*/
while(pre!
=NULL&
k<
i-1)/*表未查完且未查到第i-1个时重复,找到pre指向第i-1个*/
pre=pre->
k=k+1;
}/*查找第i-1结点*/
if(!
pre)/*如当前位置pre为空表已找完还未数到第i个,说明插入位置不合理*/
printf("
插入位置不合理!
"
);
returnERROR;
s=(Node*)malloc(sizeof(Node));
/*申请一个新的结点S*/
s->
data=e;
/*值e置入s的数据域*/
next=pre->
/*修改指针,完成插入操作*/
pre->
returnOK;
}
intDelList(LinkListL,inti,ElemType*e)
/*在带头结点的单链表L中删除第i个元素,并将删除的元素保存到变量*e中*/
Node*pre,*r;
while(pre->
=NULL&
k<
i-1)/*寻找被删除结点i的前驱结点i-1使p指向它*/
}/*查找第i-1个结点*/
(pre->
next))/*即while循环是因为p->
next=NULL或i<
1而跳出的,而是因为没有找到合法的前驱位置,说明删除位置i不合法。
*/
删除结点的位置i不合理!
r=pre->
next->
/*修改指针,删除结点r*/
*e=r->
data;
free(r);
/*释放被删除的结点所占的内存空间*/
printf("
成功删除结点!
intListLength(LinkListL)
/*求带头结点的单链表L的长度*/
/*用来存放单链表的长度*/
while(p!
returnj;
/*j为求得的单链表长度*/
5.测试数据及结果
实验总结:
在调试的时候发现在头插法的时候出现错误,经过逻辑思考与调试,发现错误所在,并且更改。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 单链表 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)