单链表
必要概念
线性表:具有相同类型的n个数据元素的有限序列(个数有限、次序性)
定义
Typedef struct 结构体类型名
{
Int data;
Struct 【结构体类型名】*next;
}Node ,*linklist ;//既是指针变量,也可以称之为指针变量的一个类型
生成一个LNode型新结点p:
p=(LinkList)malloc(sizeof(Node));
系统回收p结点:
free(p)
单链表特点:
-
- 它是一种动态结构,整个存储空间为多个链表共用
- 不需预先分配空间
- 指针占用额外存储空间
- 不能随机存取,查找速度较慢
基本操作
CreateList_L(&L, n) // 创建线性表
头插法建立单链表
Status init_linklist(linklist *L,int n)
{
*L=(linklist)malloc(sizeof(int));
L->next=NULL;
linklist *p, *r;//r指针是标识结点走向的指针,是所有链式存储结构种都必须存在的
r=NULL;
For (int i=1;i<=n;i++)
{
P=(linklist)malloc(sizeof(int));
P->next=r;
L->next=p;
r=p;
}
}
尾插法建立单链表
Status init_linklist(linklist *L,int n)
{
Linklsit *p,*r;//记住这里要定义两个节点,一个是p,构成链表的结点,一个是r构成尾指针的结点
*L=(linklist)malloc(sizeof(int));
L->next=NULL;
For(int i=1;i<=n;i++)
{
P=(linklist)malloc(sizeof(int));
p->next=NULL;
L->next=p;//链接到头节点
r->ne