#include<iostream>
/*
双链表
*/
typedef int Elemtype;
typedef struct DNode{
Elemtype data; //数据域
DNode *pre; //前驱
DNode *next; //后继
}DNode,*DLinkList;
//头插法创建双链表
DLinkList createHeadDList() {
DLinkList L = (DLinkList)malloc(sizeof(DNode));
Elemtype e;
L->next = NULL;
L->pre = NULL;
scanf("%d", &e);
while (e != 999) {
DNode *s = (DNode*)malloc(sizeof(DNode));
s->data = e;
s->next = L->next;
if (L->next)
L->next->pre = s; //插入第一个结点时不需要这个操作
s->pre = L;
L->next = s;
scanf("%d", &e);
}
return L;
}
//尾插法创建双链表
DLinkList createFootDList() {
DLinkList L = (DLinkList)malloc(sizeof(DNode));
Elemtype e;
DNode *s,*r = L;
L->pre = NULL;
scanf("%d", &e);
while (e != 999) {
s = (DNode*)malloc(sizeof(DNode));
s->data = e;
r->next = s;
s->pre = r;
r = s;
s
双链表的创建与操作
最新推荐文章于 2022-08-21 20:08:30 发布
本文详细探讨了双链表的数据结构,包括如何创建、插入、删除节点,以及双链表的优势和应用场景。通过实例解析,加深对双链表操作的理解,为数据结构和算法学习提供实用参考。
摘要由CSDN通过智能技术生成