链表算法例题及练习

链表算法例题及练习


2024年4月30日发(作者:)

单链表算法练习(一)

上节课思考问题:

1、 链表的特点是什么?

2、 结点、数据域、指针域?

3、 单链表、双链表、多链表、循环链表?

4、 头指针、头结点?

5、 在链表中设置头结点的好处?

算法1:创建单链表(头插法,课本算法2.11)

void CreateList(参数列表) Linklist &L, int n

{第一步:开辟头结点,使其成为一个空单链表

L=Malloc(sizeof(Lnode));

L->next=NULL;

第二步:依次创建新结点

For(i=n;i>0;i--)

开辟新结点

P=Malloc(sizeof(Lnode));

赋值

Scanf(&P->data);

使其成为后一结点

P->next=L->next;

插入

到表头

L->next=p;

}

算法2:查找(返回第i个元素的值,课本算法2.8)

status GetElem_L(参数列表) LinkList L, int i,

ElemType &e

{第一步:初始化,从第一个结点开始

P=L->next;

J=1;

第二步:顺序向后查找,直到表尾或找到第i个元素

While(!p && j>i )

{P=p->next;

J++}

第三步:判断是否找到该元素(没有,返回ERROR;有,

将其存放于指定元素)

If(!p || j>i) return ERROR;

E=p->data;

第四步:返回OK

return OK;

}

单链表思考练习题一:

1、

用单链表结构来存放26个英文字母组成的线性表(a,b,c,…,

z),请写出C语言程序。

难点分析:每个数据元素在内存中是“零散”存放的,其首地址

怎么找?又怎么一一链接?

实现思路:先开辟头指针,然后陆续为每个数据元素开辟存储空

间并赋值,并及时将地址送给前面的指针。

2、思考尾插法创建单链表的算法。

3、分析课本算法2.9和2.10。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714426442a2444183.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信