节点(Node)
数据
struct node
{
DATA data;
struct node *next;
};
特征
1.链表中节点应该是结构体类型。
2.结构中应该包含两个域,一个是数据域,用普通数据定义的数据域来保存一些信息,另一个是指针域,指针域储存指针变量,类型必须和节点类型一致。next 指向node必须和node一致。
typedef struct player
{
int account;
char name[20];
int hp;
int power;
int intelligence;
struct player *next;
}PLATER;
链表
每一个元素都是一个结构体,节点,储存大量的信息用结构体数组来储存,但这样需要大量的连续的储存空间,某些情况下这样是比较困难的。
不连续的,散着的信息可以用链表来储存。
链表
·一系列节点
·一条数据(任意类型)
·一个该节点类型的指针
·节点之间首尾相连(指向链表中下一个节点的指针)(首尾相连,第一个节点的指针域存储的是第二个节点的地址)
·头指针:指向第一个节点的指针
·尾指针:意味着后面没有其他的节点了,节点指针指向空
建立一个单向链表
typedef struct player
{
int account;
char name[20];
int hp;
int power;
int intelligence;
struct node *next;
}PLAYER;
1 创建节点
PLAYER pl1={1,“name”,hp,power,intelligence};
PLAYER pl2={2,“name”,hp,power,intelligence};
PLAYER pl3={3,“name”,hp,power,intelligence};
2 链:是每个节点的指针域储存后继节点的地址(后继节点,就是他后一个节点;前驱节点,就是他前一个节点)
pl1.next=&pl2;
pl2.next=&pl3;
3 头:确定头指针
head =&pl1;
4 尾:确定尾节点
pl3.next=NULL;
具体代码实现
int main()
{
PLAYER pl1={1,“name”,hp,power,intelligence};
PLAYER pl2={2,“name”,hp,power,intelligence};
PLAYER pl3={3,“name”,hp,power,intelligence};
PLAYER *head;
head = &pl1;
pl1.next=&pl2;
pl2.next=&pl2;
pl3.next=NULL;
printf(“The first player is:%s”,head->name);
return 0;
}