双链表——双链表的定义及其基本操作(初始化、头插法尾插法建表、插入、查找、删除、判空等)_双链表基本操作_薛定谔的猫ovo的博客-优快云博客
定义与初始化
typedef struct LNode {
int data;
struct LNode* next; //定义一个LNode的指针
struct LNode* prior;
}LNode;
LNode* InitList(LNode* L) {//初始化双链表
L = (LNode*)malloc(sizeof(LNode));
L->prior = NULL;
L->next = NULL;
return L;
}
尾插
bool addNode(LNode* plist, int nVal) {
LNode* p = plist;
while ((p->next)!=NULL) //寻找尾结点
{
p = p->next;
}
LNode* L = (LNode*)malloc(sizeof(LNode));
L->data = nVal;
L->prior = p;
p->next = L;
p = L; //p重新指向尾结点
p->next = NULL;
if (((p->data) == nVal) && ((p->next) == NULL)&&((p->prior)!=NULL))
return true;
else
{
return false;
}
}
尾删
bool delNode(LNode* plist) {
LNode* p = plist;
while ((p->next->next) != NULL) //寻找尾结点的前一个结点
{
p = p->next;
}
p->next = NULL; //删除尾结点
free(p->next);//释放内存
if ((p != NULL) && ((p->next) == NULL)) {
return true;
}
else
{
return false;
}
}