双向循环链表--增删查操作
2017-09-29 21:31
525 查看
双向循环链表与单链表区别其实不多,对比之后就是多了几个操作步骤
#include <stdio.h> #include <malloc.h> typedef int Elemtype; typedef struct LNode{ Elemtype data; struct LNode *prior; struct LNode *next; }LNode,*LinkList; LinkList MCreatlist_last(LinkList head,Elemtype n)//尾插法 { LinkList p; LinkList q;//尾指针 int i; head=(LinkList)malloc(sizeof(LNode)); head->next=head; head->prior=head; q=head; for(i=0;i<n;i++) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=q->next; p->prior=q; q->next=p; q=p; } head->prior=q; return head; } void InsertList(LinkList head,int i,int e)//插入 { LinkList p,s; int j=1; p=head->next; while(p!=head&&j<i) { p=p->next; ++j; } s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; s->next->prior=s; s->prior=p; /* s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s;*/ // return head; } void deletelist(LinkList head,int i,int *e)//删除 { LinkList p,q; int j=1; p=head->next; while(p->next&&j<i) { p=p->next; j++; } //p=(LinkList)malloc(sizeof(LNode)); // *e=p->data; q=p; p->prior->next=p->next; p->next->prior=p->prior; *e=q->data; free(p); } int Getelem(LinkList head,int i)//得到 { LinkList p; int e; int j=1; p=head->next; while(p&&j<i) { p=p->next; ++j; } if(!p->next||j>i) return 0; else{ e=p->next->data; return e; } } int main() { LinkList head,star; int i=0; int e; int get; head=MCreatlist_last(head,5); /* star=head->next; while(i<5) { printf("%d ",star->data); star=star->next; ++i; }*/ /*InsertList(head,3,2); star=head->next; while(i<6) { printf("%d ",star->data); star=star->next; ++i; }*/ deletelist(head,3,&e); star=head->next; while(i<4) { printf("%d ",star->data); star=star->next; ++i; } printf("\n%d\n",e); get=Getelem(head,3); printf("%d",get); return 0; }
相关文章推荐
- 双向循环链表的增删查操作
- 双向循环链表操作的实现
- 关于双向循环链表基本操作
- 实战数据结构(5)_双向循环链表的基本操作
- 双向循环链表的基本操作
- c++——双向循环链表常见操作
- 双向循环链表相关操作
- C++ 双向链表 使用模板 增删操作
- 双向链表的增删改查操作
- 【数据结构】-线性表-双向循环链表-1328:链表的基本操作【好题】
- 双向循环链表基本操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 2016年12月23日学习总结----双向循环链表操作程序(头插、尾插、中间插入、删除)
- 双向循环链表基本操作的实现(C语言)
- 双向循环链表的基本操作
- c语言实现循环链表的增删插入等操作
- 双向循环链表基本操作(C语言版)
- 数据结构_线性表_链式存储_双向循环链表的基本操作
- 双向循环链表的基本操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作