1.头文件及类型定义
#include<stdio.h>
#include<stdlib.h>
#define ElemType int
2.单链表结点类型定义
typedef struct LNode {
ElemType data;
struct LNode* next;
}LNode, * LinkList;
3.函数声明
LinkList InitList(LinkList& L);
bool Empty(LinkList L);
bool InsertList(LinkList& L, int i, ElemType e);
bool InsertNextNode(LNode* p, ElemType e);
bool InsertPriorNode1(LinkList& L, LNode* p, ElemType e);
bool InsertPriorNode2(LNode* p, ElemType e);
bool ListDelete(LinkList& L, int i, ElemType& e);
bool DeleteNode1(LinkList& L, LNode* p);
bool DeleteNode2(LNode* p);
LNode* GetElem(LinkList L, int i);
LNode* LocateElem(LinkList L, ElemType e);
int Length(LinkList L);
LinkList List_TailInsert1(LinkList& L);
LinkList List_TailInsert2(LinkList& L);
LinkList List_HeadInsert(LinkList& L);
void PrintList(LinkList L);
4.基本操作
4.1 初始化单链表
LinkList InitList(LinkList& L) {
L = (LNode*)malloc(sizeof(LNode));
if (L == NULL)
return NULL;
L->next = NULL;
return L;
}
4.2 判空
bool Empty(LinkList L) {
if (L->next == NULL)
return true;
else
return false;
}
4.3 插入操作
4.3.1 按位插入
bool InsertList(LinkList& L, int i, ElemType e) {
if (i < 1)
return false;
LNode* p = GetElem(L, i - 1);
return InsertNextNode(p, e);
}
4.3.2 指定结点插入
4.3.2.1 指定结点后插