【数据结构】 双循环链表代码演示
2014-02-17 11:21
375 查看
#include <stdio.h> #include <stdlib.h> typedef struct Data { Data *prior; // 前驱指针 Data *next; // 后继指针 int elem; // 数据元素 }DoubleLinked,*PDoubleLinked; void DisDoubleLinked(PDoubleLinked L); void InsertDoubleLinked(PDoubleLinked L,int index,int elem); void DeleteDoubleLinked(PDoubleLinked L,int index); void ModifyDoubleLinked(PDoubleLinked L,int index,int elem); void main() { PDoubleLinked L,P,Q; int size = 0; /**先初始化在使用*/ L = (PDoubleLinked)malloc(sizeof(DoubleLinked)); // 两种策略 // 一 用到的时候再申请 // 二 先申请 一大段 不够的时候再申请 P = L; L->prior = NULL; printf("请输入双链表的大小:"); scanf("%d",&size); while (size-- != 0) { P->next = (PDoubleLinked)malloc(sizeof(DoubleLinked)); Q = P; P = P->next; P->prior = Q; P->next = NULL; P->elem = size*2+1; } P->next = L; L->prior = P; // 循环表头 // 显示双链表 DisDoubleLinked(L); // 增 InsertDoubleLinked(L,2,23); printf("\n"); DisDoubleLinked(L); printf("\n"); // 删 DeleteDoubleLinked(L,3); DisDoubleLinked(L); printf("\n"); // 改 ModifyDoubleLinked(L,3,521); DisDoubleLinked(L); printf("\n"); } void DisDoubleLinked(PDoubleLinked L) { PDoubleLinked P = L->next; while (P != L) // P != L 的时候循环进行 { printf("%d\t",P->elem); P = P->next; } } void InsertDoubleLinked(PDoubleLinked L,int index,int elem) { PDoubleLinked P = L; PDoubleLinked T; PDoubleLinked Q = (PDoubleLinked)malloc(sizeof(DoubleLinked)); Q->elem = elem; while (--index != 0) { P = P->next; } T = P->next; Q->prior = P; Q->next = T; P->next = Q; Q->next = T; } void DeleteDoubleLinked(PDoubleLinked L,int index) { PDoubleLinked P = L; PDoubleLinked Q; while (--index != 0) { P = P->next; } Q = P->next; P->next = Q->next; Q->next->prior = P; free(Q); } void ModifyDoubleLinked(PDoubleLinked L,int index,int elem) { PDoubleLinked P = L; while (index-- != 0) { P = P->next; } P->elem = elem; }
相关文章推荐
- C语言数据结构之循环链表的简单实例
- 数据结构_线性表_链式存储_单向循环链表的基本操作
- 重温数据结构:有序循环链表的插入
- 数据结构--双向循环链表--插入
- 数据结构--循环链表
- 汇编语言循环遍历链表代码分析(16)
- Linux内核2.6.14源码分析-双向循环链表代码分析(巨详细)
- 数据结构--双向循环链表C实现
- 链表(单向、双向、单向循环、双向循环)学习过程总结——有源代码、注释和示意图
- C代码实现:操作循环链表按规则移除结点
- 数据结构Java实现04----循环链表、仿真链表
- 数据结构之循环链表
- 线性表12|循环链表 – 数据结构和算法17
- 数据结构--循环链表
- 数据结构--单向循环链表、双向循环链表
- 链表数据结构图解 和 代码实现
- 数据结构-循环链表
- Java 数据结构链表操作实现代码
- 数据结构(4)--循环链表的应用之约瑟夫环问题以及线性表总结之顺序表与链表的比较
- 【C++数据结构】模版类实现双循环链表的基本操作