目录
1.链表的概念:
- 什么是链表,链表其实是一种数据结构,也就是一种数据存放的思想。
2.数组的特点:
- 元素地址是连续的。
- 缺点:在实际应用中,在某个位置 增 删 改 掉一个数据都很麻烦,牵一发而基本就要动很多地方,非常不灵活。
3.链表的特点:
- 链表的每一项都是一个结构体,地址是不连续的,每一项由结构体里面的指针进行连接。
- 优点:在实际应用中,在某个位置 增 删 改 掉一个数据非常的灵活。只要把结构体里面的指针重新指向新的位置即可。
4.链表入门理解:
- 链表是通过结构体里面的 *next指针 连接下一个结构体的。*next指针指向下一个结构体的地址。
- 访问链表和访问数组一样,只要有首地址即可。在链表里面就是链表头了。
5.链表的动态遍历:
链表的遍历,是利用链表里面,声明的指向下一个结构体的指针为NULL的特性。
void printLink(struct Student *head) //向函数参数里面传入一个链表的头(首地址)
{
while(head != NULL){
printf("%d ",head->data);
head = head->next;
}
}
6.链表入门理解_代码(这里是链表的静态添加):
#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;
}
}
int main()
{
int i;
//普通数组:
int array[] = {1,2,3};
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("利用链表头t1表示3个数:\n ");
printf("%d %d %d\n",t1.data,t1.next->data,t1.next->next->data);
printLink(&t1); //链表的遍历
system("pause");
return 0;
}