- 链表(一) 最基础的基础:初始化、单链表插入删除、遍历
- 链表(二) 单链表的整表创建(头插尾插)与整表删除
- 链表(三) 双向链表、静态链表
- 链表(四) 循环链表
- 链表leetcode刷题小结(3/21)
链表的基础(一)
最基础的基础:初始化、单链表插入删除、遍历
形式:
typedef struct Node{
ElemType data;//ElemType可以是int/char/double等等等
struct Node *next;
}Node,*LinkList;
表示一个单链表时,只需声明一个头指针 L,指向单链表的第一个结点
LNode * L; //声明一个指向单链表第一个结点的指针
LinkList L; //声明一个指向单链表第一个结点的指针
不带结点的单链表:
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//初始化一个空的单链表
bool InitList(LinkList &L){ &:代表L的引用,若无&,就表示L的复制品,L并未改变
L = NULL; //空表,暂时没有任何结点,防止脏数据
return true;
}
void test(){
LinkList L; //声明一个指向单链表的指针,并没有创建结点
InitList(L); //初始化一个空表
}
带结点的单链表:
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//初始化一个单链表(带头结点)
bool InitList(LinkList &L){
//分配一个头结点,不存储数据
L = (LNode *)malloc(sizeof(LNode));
if(L = NULL) //内存不足,分配失败
return false;
L->next = NULL; //头结点之后暂时还没有节点
return true;
}
void test(){
LinkList L;
InitList(L);
}
读取:
Node p;
while(!p)
{
p=p->next;
}
单链表插入
s->next = p->next;
p->next = s;
单链表删除
q = p->next;
p->next = q->next;
//能不能直接写成p->next = p->next->next;?