1.链表的格式类型:
strut node
{
int data;
struct node *next;
}
(1).结构体的定义后并不占用内存,而只是创建了一个模板,在需要使用的时候赋值一份即可。
(2).链表的使用比较灵活,不能使用data数据段,不能用栈,只能用堆内存。
(3).头指针不是节点,而是一个普通的指针,类型是struct node*类型的。 头指针指向链表中的第一个节点。
2.链表节点的创建:也可以利用后面的尾插法函数进行节点的创建:
struct node *creat_node(int data)
{
struct node *p;
p = (struct node *)malloc(sizeof(struct node));
if(NULL == p)
{
printf("malloc error \n");
return NULL;
}
//清除结构体
memset(p,0,sizeof(struct node));
//节点数据的填充
p->data = data;
p->next = NULL; //保证每一个目前来说最后的节点最后都指向NULL。
}
3.链表的遍历(打印算法):利用最后一个节点next指向NULL的特性
void bainli(struct node *pHeader)
{
int i = 0;
struct node *p =