数据结构课程设计 双向循环链表的实现 设计要求: (1)定义教材P35 所示“线性表的双向循环链表存储结构”,在此存储结构的基础上,实现如下操作
(2)建立带头结点的双向循环链表L
(3)在 L 中第 i 个位置之前插入新的元素 e,如教材P36 所示
(4)在 L 中删除第 i 个元素,并用 e 返回其值,如教材P37 所示
(5)将 L 逆置
所选教材为严蔚敏的数据结构
//CreateList_L
cpp //To create a LinkList #include #include #include # define TRUE 1 # define FALSE 0 # define OK 1 # define ERROR 0 # define INFEASIBLE -1 # define OVERFLOW -2 typedef struct DuLNode { int data; struct DuLNode *prior; struct DuLNode *next; }DuLNode,*DuLinkList; // 初始条件:L 已存在
操作结果:返回 L 中数据元素个数 int ListLength(DuLinkList L) { int i=0; DuLinkList p=L->next; // p 指向第一个结点 while(p
=L) // p 没到表头 { i++; p=p->next; } return i; } // 由双链循环线性表L 的头结点出发,正序输出每个数据元素 void ListTraverse(DuLinkList L) { DuLinkList p=L->next; while(p
=L) { cout