何为不带头结点
L指针直接指向第一个结点。
基本功能
初始化单链表
建立单链表:头插法和尾插法
遍历单链表
按位序查找元素
按值查找元素
按位序插入结点
按位序删除结点
求单链表长度
代码
相比较带头结点的单链表,不带头结点的单链表实现部分函数时,要单独考虑第一个结点。而带头结点的单链表则不需要单独考虑。
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int ElemType;
//定义单链表结点
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L);//初始化单链表:不带头结点
LinkList List_HeadInsert(LinkList &L);//建立单链表:头插法
LinkList List_TailInsert(LinkList &L);//奖励单链表:尾插法
void OutPutList(LinkList L);//遍历输出单链表
LNode *GetElem(LinkList L,int i);//按位序查找元素
LNode *LocateElem(LinkList L,ElemType e);//按值查找元素
bool ListInsert(LinkList &L,int i,ElemType e);//按位序插入结点
bool ListDelete(LinkList &L,int i,ElemType &e);//按位序删除
int OutPutLength(LinkList L);//输出链表长度
//初始化单链表:不带头结点
bool InitList(LinkList &L){
L=NULL;
return true;
}
//建立单链表:头插法
LinkList List_HeadInsert(LinkList &L){
int x