#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int 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;
}
//判断单链表是否为空(带头结点)
bool Empty(LinkList L){
if(L->next == NULL)
return true;
else
return false;
}
//在第i个位置插入元素e(带头结点)
bool ListInsert(LinkList &L, int i, int e){
if(i<1) //判断插入位置是否在合理范围内
return false;
LNode *p; //定义指针p,指向当前扫描到的结点
int j=0; //j为当前p指向的位置,初始化为0(即头结点位置)
p = L; //L指向头结点
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;
}
数据结构的单链表操作(带头结点按位序插入)
最新推荐文章于 2023-10-16 15:21:38 发布