双向循环链表--增删查操作
来源:互联网 发布:快3开奖源码 编辑:程序博客网 时间:2024/05/22 05:15
双向循环链表与单链表区别其实不多,对比之后就是多了几个操作步骤
#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;}
阅读全文
0 0
- 双向循环链表--增删查操作
- 双向循环链表的增删查操作
- 双向循环链表的创建,增删查改
- 双向链表的增删改查操作
- Linux内核双向链表的增删查操作
- 双向链表的增删改查
- 双向链表的增删改查
- 用java实现双向循环链表的增删改查
- 双向循环链表操作
- 双向循环链表操作
- C语言实现双向链表,增删改查,排序
- 双向循环链表的基本操作
- 双向循环链表的操作源码
- 双向循环链表---基础操作
- 双向循环链表的基本操作
- 双向循环链表操作的实现
- 双向循环链表的基本操作
- 双向循环链表操作的实现
- 657. Judge Route Circle
- 集合各实现类的底层实现原理
- Python实现中文词云(wordcloud),根据背景图片生成词云
- Java--泛型
- python_lintcode_97二叉树的最大深度 _155二叉树的最小深度
- 双向循环链表--增删查操作
- 搭建MariaDB Galera 同步复制
- 烦心事
- 超全面的JavaWeb笔记day17<JDBC>
- python3 函数参数
- Java ArrayList源码分析
- javascript实现后购物界面添加一类
- 使用IntelliJ IDEA 配置Maven详解
- 617. Merge Two Binary Trees