#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
//初始化一个空的单链表
bool InitList(LinkList &L){
L = NULL; //初始化为空表
return true;
}
//判断单链表是否为空
bool Empty(LinkList L){
if(L == NULL)
return true;
else
return false;
}
//在第i个位置插入结点(不带头结点)
bool ListInsert(LinkList &L, int i, int e){
if(i<1) //判断插入位置是否在合理范围内
return false;
if(i==1){ //插入第1个结点的操作与其它结点不同,需要特殊处理
LNode *s = (LNode *)malloc(sizeof(LNode));
s->data = e;
s->next = L;
L = s; //头指针指向新结点
return true;
}
LNode *p; //定义指针p,指向当前扫描到的结点
int j=1; //j为当前p指向第几个结点
p = L; //p指向第1结点(不是头结点)
while(p!=NULL && j< i-1){
p = p->next;
j++;
}
if(p==NULL) //i值不合法(超出队尾)
return false;
LNode *s = (LNode *)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s; //将结点s连到p之后
return true;
}