线性表之双向链表
来源:互联网 发布:淘宝开店 商标 随便 编辑:程序博客网 时间:2024/06/06 05:54
#include <stdio.h>#include <stdlib.h>#define Error 0#define Ok 1typedef int Status;typedef int ElemType;typedef struct DuLNode{ElemType data; struct DuLNode *prior;struct DuLNode *next;}DuLNode,*DuLinklist; //双向链表的结构体 两个指针,分别指向前一个和后一个节点DuLinklist Ini_DuLinklist() //初始化双向链表{DuLinklist L;L=(DuLNode*)malloc(sizeof(DuLinklist));if(!L) { printf("出错了啊"); exit(1);}return L;}DuLinklist Create_DuLinklist(DuLinklist L) //创建双向链表{DuLinklist p,q;p=(DuLNode *)malloc(sizeof(DuLinklist));p=L;printf("请输入您的链表,输入0时结束");q=(DuLNode*)malloc(sizeof(DuLinklist));scanf("%d",&q->data);while((q->data!=NULL)||q->data!=0){p->next=q;q->prior=p;q->next=L;p=p->next;L->prior=p;q=(DuLNode*)malloc(sizeof(DuLinklist));scanf("%d",&q->data);}return L;}Status Insert_DuLinklist(DuLinklist L,int i,ElemType e ) //向双向链表中插入一个节点{DuLinklist p,s;int j;j=0;p=L;s=(DuLNode*)malloc(sizeof(DuLinklist));if(!s) return Error;while (p&&j<i){p=p->next;j++;}s->data=e;s->prior=p->prior;p->prior->next=s;s->next=p;p->prior=s;return Ok;}Status Delete_DuLinklist (DuLinklist L,int i,ElemType *e) //双向链表中删除一个节点{DuLinklist p,s;int j;j=0;p=L;while (p&&j<i){p=p->next;j++;}*e=p->data;p->prior->next=p->next;p->next->prior=p->prior;return Ok;}Status GetElem(DuLinklist L,int i,ElemType *e) //获取双向链表中第i个元素{DuLinklist p;int j;j=0;p=L;while (p&&j<i){p=p->next;j++;}if(!p||j>i) return Error;*e=p->data;return *e;}void print(DuLinklist L){DuLinklist p;p=L->next;printf("您的双向链表为");while(p!=L){printf("%d",p->data);p=p->next;}}void main (){DuLinklist head;int i,e,j,k,a,t;head=Ini_DuLinklist(); Create_DuLinklist(head);print(head);printf("请输入想要取得的数的为第几个元素啊");scanf("%d",&i);GetElem(head,i,&e);printf("第%d个元素为%d",i,e);printf("请输入您要在第几个位置之前插入什么元素");scanf("%d,%d",&j,&k);Insert_DuLinklist(head,j,k);print(head);printf("请输入您要删除的位置");scanf("%d",&a);Delete_DuLinklist(head,a,&t);print(head);getchar();getchar();}双向链表的插入操作是需要进行四个指针的修改
双向链表的删除操作是需要进行两个指针的修改
双向链表的结构体
双向链表删除节点 修改两个指针
双向链表插入节点 修改四个指针 有顺序的
- 线性表之双向链表
- 线性表之双向循环链表
- 线性表之双向链表
- 数据结构之线性结构--双向链表
- 线性表(双向链表)
- 线性表-双向链表
- 数据结构学习笔记(4.线性表之双向链表)
- 数据结构学习笔记(4.线性表之双向链表)
- (续)线性表之双向链表(C语言实现)
- Java数据结构(四):线性表之双向链表
- Java数据结构-线性表之双向链表
- 数据结构(10)线性表之双向链表
- 数据结构之线性表——双向链表
- 大话数据-—线性表之循环/双向链表
- C语言线性表之双向循环链表
- 数据结构之线性结构--双向循环链表
- [SDUT](2053)数据结构实验之链表九:双向链表 ---双向链表(线性表)
- 数据结构-线性表-双向链表
- javascript高级(2)
- Eclipse中10个最有用的快捷键组合
- Sqlplus登录命令
- 修改Extjs Grid和PagingBar的Store
- .net常用函数语法
- 线性表之双向链表
- 练习 2.3-7 求一个元素是否为数组中两个数的和
- 在 DB2 优化器中使用分布统计信息
- JAVA项目架构之我见
- Android 按键屏蔽, Back, Home....
- 我在学习编程中犯的两个最大错误
- 软件开发成本构成及评估
- 很赞的图标搜索网站
- js 给数组赋值