双向循环链表基本操作(C语言)
来源:互联网 发布:squid linux 下载 编辑:程序博客网 时间:2024/04/28 00:44
全自己写的哦,没有看书哦
#include<stdio.h>#include<stdlib.h>#define OK 1#define ElemType inttypedef int Status; typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next;}DuLNode,*DuLinkList;//建表void Creat(DuLinkList &L,int n){ L=(DuLinkList)malloc(sizeof(DuLNode)); L->next=L; L->prior=L; DuLinkList p; int i; for(i=0;i<n;i++) { p=(DuLinkList)malloc(sizeof(DuLNode)); scanf("%d",&(p->data)); p->next=L->next; p->prior=L; L->next=p; p->next->prior=p; if(i==0) L->prior=p; }}//正序遍历void TravserFIFO(DuLinkList L) { DuLinkList p; p=L->prior; for(;p!=L;) { printf("%d ",p->data); p=p->prior; } printf("\n");} //倒序遍历void TravserLIFO(DuLinkList L) { DuLinkList p; p=L->next; for(;p!=L;) { printf("%d ",p->data); p=p->next ; } printf("\n");}//插入Status Insert(DuLinkList &L,int i,int e) { DuLinkList s,p; p=L; s=(DuLinkList )malloc(sizeof(DuLNode)); s->data=e; int j; for(j=0;j<i-1;j++) { p=p->prior ; } p->prior->next=s; s->prior=p->prior; s->next=p; p->prior=s; return OK;}//删除int Del(DuLinkList &L,int i) { DuLinkList p; p=L; int j,e; for(j=0;j<i;j++) { p=p->prior ; } p->prior->next=p->next; p->next->prior=p->prior; e=p->data ; free(p); return e;}void main(){ DuLinkList L; while(1){ printf("1. 构建双向循环链表\n"); printf("2. 正序遍历\n"); printf("3. 倒序遍历\n"); printf("4. 插入元素\n"); printf("5. 删除元素\n"); printf("0. 退出系统\n"); int c; scanf("%d",&c); switch(c) { case 1:{ //建表 int n; printf("请输入要输入的元素数目\n"); scanf("%d",&n); printf("请输入元素:\n"); Creat(L,n); break;} case 2:{TravserFIFO(L);break;} case 3:{TravserLIFO(L); break;} case 4:{ printf("请输入要输入的数据:\n"); int i,e; scanf("%d",&e); printf("请输入要插入的位置(正序):\n"); scanf("%d",&i); Insert(L,i,e); break;} case 5:{ printf("请输入要删除的元素的位置(正序):\n"); int i,e; scanf("%d",&i); e=Del(L,i); printf("%d已被删除\n",e); break;} case 0:exit (0); } }}
1 0
- 双向循环链表基本操作(C语言)
- C语言实现双向非循环链表(不带头结点)的基本操作
- C语言实现双向非循环链表(带头结点尾结点)的基本操作
- 双向循环链表基本操作的实现(C语言)
- C语言单链表,双向链表,循环单链表,循环双链表的基本操作
- 双向链表的基本操作(C语言)
- C语言(数据结构) - 双向链表的基本操作
- C语言通用双向循环链表操作函数集
- <数据结构与算法>双向循环链表的全面基本框架(C语言描述)
- C语言实现双向链表的基本操作
- C语言实现双向链表的基本操作
- c语言实现双向链表的基本操作
- 双向循环链表的基本操作
- 双向循环链表的基本操作
- 双向循环链表的基本操作
- 双向循环链表的基本操作
- 双向循环链表基本操作
- 双向循环链表的基本操作
- 使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用
- 利用开源组件commons-fileupload上传图片文件(2)
- Android很全常用工具类源码
- php实现简单验证码
- 学习GCD后感——转自海森v
- 双向循环链表基本操作(C语言)
- 深度对话C++天才Andrei Alexandrescu
- hdu-3625 Examining the Rooms(斯特灵数第一类)
- 题目1001:A+B for Matrices
- 分享MDCC2014 Xamarin培训ppt
- POJ:题号 3295------tautology
- 树链剖分学习(HDOJ 3966)
- 外专业考(美国)计算机科学硕士最好学过哪些课程
- LeetCode 124 Divide Two Integers