1. 静态链表和动态链表的区别:
(1)静态链表放在栈区
(2)动态链表放在堆区,堆区数据必须要手工开辟,手工释放
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct LinkNode
{
int num; //数据域
struct LinkNode * next; //指针域
}
3. 静态链表的创建方法及使用
struct LinkNode node1 = {10, NULL};
struct LinkNode node2 = {20, NULL};
node1.next = &node2; //建立结点之间的关系
struct LinkNode * pCurrent = &node1;
while(pCurrent != NULL) //遍历链表
{
printf("%d\n", pCurrent->num); //打印结点中的数据
pCurrent = pCurrent->next;
}
4. 动态链表的创建方法及使用
struct LinkNode * node1 = malloc(sizeof(struct LinkNode));
struct LinkNode * node2 = malloc(sizeof(struct LinkNode));
node1->next =node2; //建立结点之间的关系
struct LinkNode * pCurrent = node1;
while(pCurrent != NULL) //遍历链表
{
printf("%d\n", pCurrent->num); //打印结点中的数据
pCurrent = pCurrent->next;
}
free(node1);
free(node2);
5. 常用约定:头结点不保存数据域,只保存指针域的一个空结点。
设定空头结点的好处:空头结点便于头插,头部插入数据方便,头结点永远不会变!