传统的数组都是连续地址,顺序结构,不便于增删。
数组和链表的对比:
#include <stdio.h>
struct Test
{
int data;
struct Test *next;
};
void printLink(struct Test *head){
while(head != NULL){
printf("%d ",head->data);
head = head->next;
}
putchar('\n');
}
int Link_Lenth(struct Test *head){
int len = 0;
while(head != NULL){
len++;
head = head->next;
}
return len;
}
int main()
{
int i;
int array[] = {1,2,3,4,5,6,7,8,9,10};
for(i = 0;i < sizeof(array)/sizeof(array[0]);i++){
printf("%d ",array[i]);
}
putchar('\n');
struct Test t1 = {1,NULL};
struct Test t2 = {2,NULL};
struct Test t3 = {3,NULL};
t1.next = &t2;
t2.next = &t3;
printf("%d %d %d \n",t1.data,t1.next->data,t1.next->next->data);
printLink(&t1);
printf("The lenth of the link is %d\n",Link_Lenth(&t1));
return 0;
}
运行结果:
1 2 3 4 5 6 7 8 9 10
1 2 3
1 2 3
The lenth of the link is 3
其它如查询,插入,修改,删除等挺简单的,思路清晰,就不打了,无非是保证头节点的情况下改一下指针指向。。。
例如删除元素2,直接将1的指针指向3,然后free(2),回收节点2即可
然后就是动态创建链表,头插法尾插法等等
链表相关应用练习放在后续项目练习:贪吃蛇 中展示。

文章讨论了数组和链表两种数据结构的区别,强调数组的连续地址和顺序访问,而链表在增删操作上的灵活性。文中提供了链表打印、长度计算的示例代码,并提到链表操作如查询、插入、删除的简单实现。文章还提及动态创建链表和在贪吃蛇游戏中的应用实践。

被折叠的 条评论
为什么被折叠?



