双向链表的基本操作
2016-03-21 20:30
381 查看
双向链表的插入顺序:
双向链表的删除顺序:
双向链表的删除顺序:
#include<stdio.h> #include<stdlib.h> typedef struct doubleLink { int data; struct doubleLink *pre; struct doubleLink *next; }dnode; //建立链表 dnode* createDLink() { dnode *head,*p,*s; int x; head = (dnode*)malloc(sizeof(dnode)); p = head; while(1) { printf("please input the data: "); scanf("%d",&x); if(x != 0) { s = (dnode*)malloc(sizeof(dnode)); s ->data = x; s-> pre = p; p->next = s; p=s; } else break; } p->next = NULL; head = head ->next; head->pre = NULL; return head; } //顺序、反序打印链表 void printDLink(dnode *head) { dnode *p,*s; p = head; printf(" left to right: \n"); while(p) { printf("%d ",p->data); s = p; //为了到达链表的末尾 p = p->next; } printf("\n right to left: \n"); while(s) { printf("%d ",s->data); s = s->pre; } printf("\n \n"); } //删除一个结点 dnode* deletedNode(dnode *head,int i) { dnode *p; p = head; if(p->data == i) { head = p->next; head->pre = NULL; free(p); return head; } while(p) { if(p->data == i) { p->pre->next = p->next; p->next->pre = p->pre; free(p); return head; } p = p->next; } printf("data not found \n"); return head; } //插入一个结点 dnode* insertdNode(dnode *head,int i) { dnode *p,*temp; p = head; temp = (dnode*)malloc(sizeof(dnode)); temp ->data = i; if(i < p->data) { head = temp; head->next = p; head->pre = NULL; p->pre = head; return head; } while(p != NULL && i > p->data) { p = p->next; } if(i < p->data) { temp ->next = p; temp ->pre = p->pre; p ->pre->next = temp; p ->pre = temp; return head; }else { p->next = temp; temp ->pre = p; temp ->next = NULL; return head; } } int main() { dnode *head; head = createDLink(); printDLink(head); head = insertdNode(head,4); head = deletedNode(head,3); printDLink(head); return 0; }
相关文章推荐
- IntelliJ IDEA 中文乱码问题解决办法
- php开发中一些前端知识杂总
- 如果一个事情总在同一个地点停留,就是没有执行效率
- 【转】Android Studio下加入百度地图的使用 (一)——环境搭建
- Android指纹识别动画(Android's animated fingerprint)库:Swirl
- 前端构建工具gulpjs的使用介绍及技巧
- java 编程思想 第五章 初始化与清理
- 不用调试就能查看Android类中的数据流
- HDU 1548 a strange lift
- spring lazy-init和 prototype
- java 构造器内部的多态方法和行为
- IOS 网络浅析-(十 NSURLSession下载简介)
- php base64编码和urlencode
- 网络通信 --> ZMQ安装和使用
- Date和SimpleDateFormat类表示时间
- 数据库中的查找语句
- movsb movsw movsd 指令详解
- bzoj1041 圆上的整点
- Nginx反向代理配置
- 每周总结