实验三 实现单链表的各种运算文档格式.docx

上传人:b****4 文档编号:16494992 上传时间:2022-11-24 格式:DOCX 页数:7 大小:86.44KB
下载 相关 举报
实验三 实现单链表的各种运算文档格式.docx_第1页
第1页 / 共7页
实验三 实现单链表的各种运算文档格式.docx_第2页
第2页 / 共7页
实验三 实现单链表的各种运算文档格式.docx_第3页
第3页 / 共7页
实验三 实现单链表的各种运算文档格式.docx_第4页
第4页 / 共7页
实验三 实现单链表的各种运算文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

实验三 实现单链表的各种运算文档格式.docx

《实验三 实现单链表的各种运算文档格式.docx》由会员分享,可在线阅读,更多相关《实验三 实现单链表的各种运算文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

实验三 实现单链表的各种运算文档格式.docx

6、输出单链表的第i位置的元素;

7、在单链表中查找一个给定元素在表中的位置;

8、单链表的删除;

9、释放单链表

三、实验要点及说明 

单链表是线性表的链式存储结构的一种形式,它用一组地址任意的存储单元存放线性表的各个元素。

具体程序如下:

#include<

stdio.h>

malloc.h>

typedefcharelemtype;

typedefstructLNode

{

elemtypedata;

structLNode*next;

}linklist;

voidinitlist(linklist*&

L)

L=(linklist*)malloc(sizeof(linklist));

L->

next=NULL;

}

voiddestroylist(linklist*&

linklist*p=L,*q=p->

next;

while(q!

=NULL)

{

free(p);

p=q;

q=p->

}

free(p);

}

intlistempty(linklist*L)

return(L->

next==NULL);

intlistlength(linklist*L)

linklist*p=L;

inti=0;

while(p->

next!

{

i++;

p=p->

return(i);

voiddisplist(linklist*L)

linklist*p=L->

while(p!

printf("

%c"

p->

data);

printf("

\n"

);

intgetelem(linklist*L,inti,elemtype&

e)

intj=0;

while(j<

i&

&

p!

j++;

if(p==NULL)

return0;

else

e=p->

data;

return1;

intlocateelem(linklist*L,elemtypee)

{

intn=1;

while(p!

=NULL&

p->

data!

=e)

n++;

return(0);

return(n);

intlistinsert(linklist*&

L,inti,elemtypee)

linklist*p=L,*s;

i-1&

else

{s=(linklist*)malloc(sizeof(linklist));

s->

data=e;

s->

next=p->

p->

next=s;

intlistdelete(linklist*&

L,inti,elemtype&

linklist*p=L,*q;

while(j<

{q=p->

if(q==NULL)return0;

e=q->

next=q->

free(q);

voidmain()

linklist*h;

elemtypee;

(1)初始化单链表h\n"

initlist(h);

(2)依次采用尾插法插入a,b,c元素\n"

listinsert(h,1,'

a'

b'

c'

d'

e'

(3)输出单链表h:

"

displist(h);

(4)单链表h的长度=%d\n"

listlength(h));

(5)单链表h为%s\n"

(listempty(h)?

空"

:

非空"

));

getelem(h,3,e);

(6)单链表h的第3个元素=%c\n"

e);

(7)元素a的位置=%d\n"

locateelem(h,'

(8)在第4个元素位置上插入f元素\n"

listinsert(h,4,'

f'

(9)输出单链表h:

(10)删除h的第3个元素\n"

listdelete(h,3,e);

(11)输出单链表h:

(12)释放单链表h\n"

destroylist(h);

四,测试与结果

结果:

五,算法思想:

单链表中重要的也是插入节点的运算,即将值为x的新节点插入到第i个节点的位置,现在单链表中找到第i-1个节点,再在其后插入新的节点,假设要在单链表的两个数据分别为a和b的结点之间插入一个数据域为x的结点。

P是指向数据域a的结点,s指向数据域为x的结点,为了插入结点*s需要修改结点*p中的指针域,令其指向结点*s而结点s中的指针域应指向结点b,从而实现3个节点之间的逻辑关系的变化。

六,心得体会:

通过这次试验,我知道了什么事情都得自己动手去思考,去理解,把这些东西都化为自己脑子里的东西,慢慢脱离书本,我知道现在自己的基础不好,但是我相信,慢慢的会变好的!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1