数据结构双向循环链表的C语言实现(插入,查询,删除)
2016-04-07 20:25
761 查看
#include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef struct DULNODE { int data; /*数据域*/ struct DULNODE *prior; /*指向前驱结点的指针域*/ struct DULNODE *next;/*指向后继结点的指针域*/ }DULNODE,*DuLinklist; typedef int Elemtype; DuLinklist Dulist_creat(DuLinklist L,int n)/*双向循环链表建立函数*/ {int i; DuLinklist p,r; L=( DuLinklist)malloc(sizeof(DULNODE));/*为头结点分配空间*/ L->next=L->prior=L; /*使头结点的后继指针和前驱指针都指向自身,形成空的双向循环链表*/ r=L; /*尾指针初始指向头结点*/ for (i=0;i<n;i++) { p=(DuLinklist)malloc(sizeof(DULNODE));/*为一个新结点分配空间*/ // printf("\nplease input the node(end with 0):\n "); scanf("%d",&p->data); /*从键盘输入值,并保存在新结点数据域中*/ p->next=r->next; /*新结点后继指针指向尾结点r的后继结点*/ p->prior=r; /*新结点的前驱指针指向尾结点r*/ r->next=p; /*尾结点的后继指针指向新结点*/ r=p; /*尾指针指向新结点,即新结点成为尾结点*/ } L->prior=r; /*使尾结点成为头结点的前驱结点*/ return L; }
相关文章推荐
- 【数据结构与算法】LCA
- 顺序结构存储串实现串通配符匹配的算法
- 第17章 二叉树,堆和优先队列(1/3)
- 哈希表处理冲突的方法
- 【动态树】【Link Cut Tree】动态树的理解(入门)
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 在Hive 中如何使用符合数据结构 maps,array,structs
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 数据结构与算法——二叉查找树类的C++实现
- 6.2 相关数据结构及其创建
- linux内核链表以及list_entry--linux内核数据结构(一)
- 利用Mat数据结构打开摄像头
- 深入学习STL第二级配置器
- SGI特殊的空间配置器 std::alloc
- STL六大组件
- 关联式容器set和map原理
- Javascript数据结构与算法---数组
- 数据结构——动态链表(C++)
- 数据结构——动态链表(C++)
- 使用栈实现DFS(非递归DFS)