初探双向链表
来源:互联网 发布:保定seo外包 编辑:程序博客网 时间:2024/05/17 09:27
还是先来唠唠最近发生的事把。
ok,拿到奖学金,被选为优秀团员,我一点感觉都没有。最近让我比较激动的是我参加了学校的盛特杯,这件事本来我是不想参与的,我觉得我还太弱,没有能力去做一个项目。但是导师给我电邮让我参加,我想干脆就抱个大腿吧,让大腿教教我怎么做项目,于是就找了个大二的学长。额,目前这件事还没有任何进展,可能是大腿要考研比较忙吧。由于刘同到高中母校演讲,最近又有电影上映,于是我就去买了《谁的青春不迷茫》来看。我靠,真的是一本烂的不能再烂的书啊,以后这种书坚决不自己买了,还是去图书馆看。
今早上去图书馆对数据结构进行攻关,把双向链表的代码写出来了,双向链表就是在单向链表的基础上再加一个前驱,其他的大致都与单向链表差不多,主要包含初始化,插入删除查找的功能。
#include<stdio.h>#include<stdlib.h>typedef int Elemtype;typedef struct DulNode{ Elemtype data; struct DulNode *prior; struct DulNode *next;}DulNode,*Dulinklist;void InitDulNode(DulNode *head)// 创建一个双向链表的表头,前驱和后继都指向自己{ head->prior=head; head->next=NULL;}DulNode *GetElemp_dul(DulNode *head,int i){ int j=1; DulNode *p=head->next; while(p!=NULL&&j<i) { p=p->next; j++; } if(j==i) { return p; } else return 0;}int Listinsert_Dul(DulNode *head,int pos,int e)//pos为要插入的位置,e为插入节点的值{ DulNode *p; p=GetElemp_dul(head,pos); if(!p) { printf("pos error!\n"); return 0; } DulNode *s; if(!(s=(Dulinklist)malloc(sizeof(DulNode)))) return 0; s->data=e; s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s; return 1;}void Print(DulNode *head){ DulNode *p; p=head->next; while(p!=NULL) { printf("%d\t",p->data); p=p->next; }}void CreatDulNode(DulNode *head,int e){ DulNode *p; p=(DulNode *)malloc(sizeof(DulNode)); p->data=e; p->next=NULL; if(head->next==NULL) { p->prior=head; head->next=p; } else { head->next->prior=p; p->next=head->next; p->prior=head; head->next=p; }}int Listdelete_Dul(DulNode *head,int i){ DulNode *p; p=GetElemp_dul(head,i); if(!p) { printf("delete pos error!\n"); return 0; } p->prior->next=p->next; p->next->prior=p->prior; free(p); return 1;}int main(){ DulNode *head; head=(DulNode *)malloc(sizeof(DulNode)); int i; InitDulNode(head); for(i=0;i<10;i++) { CreatDulNode(head,i); } Listinsert_Dul(head,4,100); Listdelete_Dul(head,4); Print(head); return 0;}这代码还是花了我1个多小时才写出来的,哎,太花时间了。
1 0
- 初探双向链表
- SzNOI 双向约瑟夫(双向链表)
- 双向链表&&堆栈
- 双向链表
- 使用双向链表
- 双向链表
- 双向循环链表
- 双向循环链表
- 双向链表
- 实现双向链表
- 双向循环链表
- 建立双向链表
- 双向链表
- 双向链表
- 双向循环链表
- 双向链表
- 链表-双向链表
- 双向链表
- 绘画的色彩基础教程
- (PHP+HTML+JavaScript+Css)一个简单爬虫的开发
- 数据结构复习-链表
- [C#基础]网络编程(三):protobuf-net
- 五子棋AI算法第八篇-重构代码
- 初探双向链表
- 不敢死队问题
- hdu4325 Flowers【树状数组区间更新单点求值 离散化】
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
- App架构经验总结
- [BZOJ2843]极地旅行社(LCT)
- hadoop源代码分析(二)从wordCount开始,剖析mapreduce的运行机制
- 想写一系列关于css draft的博客
- WPF中Border控件的属性介绍