---------------start reading---------------
前言
头结点是用来标记单链表的一个标志,有些时候我们可以不使用头结点,这时候操作就完全不一样了。
如何建立一个无头结点的单链表?不能在头结点的数据域中放数据再变成假的第一个数据节点在进行操作,那是自己骗自己。
在单链表中我们直接头结点进行解引用,但无头结点的链表最初其实就是一个指针,没有指向任何结点,在进行插入时将这个指针指向第一个数据结点。
单链表对结构体进行操作,我们引进一个一级指针进行解引用,而无头结点的单链表我们要对plist这个指针进行操作,所以要引进一个二级指针,二级指针解引用才能对指针进行操作
下面就来看看无头结点的单链表的一些基本操作
特别注意
- 初始化二级指针的使用,**pplist
2.尾插是否有第一个数据结点,若无第一个数据结点,NULL解引用会崩溃
头文件
#pragma once
//不带头节点的单链表
typedef struct NNode
{
int data;
struct NNode *next;
}NNode,*NList;
//链表初始化
void InitList(NList *pplist);//NNode*
//头插
bool Insert_head(NList *pplist,int val);
//尾插
bool Insert_tail(NList *pplist,int val);
//查找
NNode *Srearch(NList plist,int key);
//