双链表相关代码。
1、创建双链表(-1结束)
2、遍历双链表
3、插入双链表元素
4、双链表删除元素
5、判断双链表是否为空
6、双链表的长度
7、查找双链表元素
0、退出程序
注意事项:
在进行内存分配时,一定要检测内存是否够用,来确保代码程序的健壮性(代码如下)。
#include <iostream>
using namespace std;
typedef struct DNode {
int data;
struct DNode* prior, * next;
}DNode;
DNode* n = (DNode*)malloc(sizeof(DNode));
if (n == NULL) {
cout << "内存不足,分配失败" << endl;
return;
}
在进行相关操作时,记得考虑临界状态,确保代码的正确运行。
以下代码考虑了删除元素为最后一位数值的情况使用if语句进行单独操作。
#include <iostream>
using namespace std;
typedef struct DNode {
int data;
struct DNode* prior, * next;
}DNode, * DLinkList;
//双链表删除元素(按值删除)
void DeleteDNode_Value(DLinkList& L, int a) {
if (LengthList(L) == 0) {
cout << "双链表为空" << endl;
return;
}
DNode* p = L->next;
DNode* q = L;
while (p != NULL) {
if (p->data == a) {
if (p->next == NULL) {
q->next = p->next;
free(p);
}
else {
q->next = p->next;
p->next->prior = q;
free(p);
}
return;
}
p = p->next;
q = q->next;
}
cout << "没找到该数值" << endl;
}
完整代码:
纯手打,亲测可以运行,使用自取。
#include <iostream>
using namespace std;
typedef struct DNode {
int data;
struct DNode* prior, * next;
}DNode, * DLinkList;
//初始化双链表
void InisDLinkList(DLinkList& L) {
L = (DNode*)malloc(sizeof(DNode));
if (L == NULL)//判断L内存开辟是否成功
{
cout << "内存不足,分配失败"