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条)