1.说明。
- 链表可以处理预先不知道变量个数的问题。
- 每一个结点都由两个部分组成。左边的部分用来存放具体的数值,用一个整型变量 就可以;右边的部分存储下一个结点的地址,可以用指针来实现(也称为后继指针)。 这里我们定义一个结构体类型来存储这个结点,如下:
struct node
{
int data;
struct node *next;
};
- 第二个成员是一个指针,用来存储下一个结 点的地址。因为下一个结点的类型也是 struct node,所以这个指针的类型也必须是 struct node * 类型的指针。
2.链表如何建立?
- 我们需要一个头指针 head 指向链表的最开始。当链表还没有建 立的时候头指针 head 为空(也可以理解为指向空结点)。
struct node *head;
head = NULL;
- 创建第一个结点,并用临时指针 p 指向这个结点。
struct node *p;
p=(struct node *)malloc(sizeof(struct node));
- 接下来分别设置新创建的这个结点的左半部分和右半部分。
scanf("%d",&a);
p->data=a;
p->next=NULL;
- ->叫做结构体指针运算符,也是用 来访问结构体内部成员的。因为此处 p 是一个指针,所以不能使用.号访问内部成员,而要 使用->。
- 设置头指针并设置新创建结点的*next 指向空。头指针的作用是方便以后从头遍 历整个链表。
if(head=&#