循环双向链表的基本操作
2016-03-10 14:24
399 查看
#include <iostream> #include <cstdio> #include <stdlib.h> using namespace std; typedef int ElemType; typedef struct DulNode { ElemType data; struct DulNode *prior; struct DulNode *next; }DulNode,*DuLinkList; DuLinkList CreateDuLinkList(int n) { int x; DulNode *h,*p; h=(DulNode *)malloc(sizeof(DulNode)); h->next = h; h->prior = h; p=h; printf("输入元素:"); while(n--) { scanf("%d",&x); DulNode *l; l=(DulNode *)malloc(sizeof(DulNode)); l->data=x; p->next=l; l->prior=p; l->next = h;//l->next指向头结点 h->prior = l; p=l; } return h; } void output(DuLinkList L) { DulNode *p; for(p=L->next;p->next!=L->next;p=p->next)//终止条件为p->next不为头结点 { printf("%d ",p->data); } } void InsertDuLinkedList(DuLinkList L,int i,ElemType e) { int j; DuLinkList p; p=L; j=1; while(j<i) { p=p->next; j++; } DulNode *s; s=(DulNode *)malloc(sizeof(DulNode)); s->data = e; s->prior = p; p->next->prior = s; s->next = p->next; p->next = s; } void DeleteDuLinkList(DuLinkList L,int i) { int j; DuLinkList p; p=L; j=1; while(j<=i) { p=p->next; j++; } p->prior->next = p->next; p->next = p->prior; free(p); } int CountDuLinkList(DuLinkList L) { int count=0; DuLinkList p; p=L; while(p->next!=L) { count++; p=p->next; } return count; } int main() { int n,i,x; DuLinkList L; printf("输入要创建的循环双向链表的长度:"); scanf("%d",&n); L=CreateDuLinkList(n); output(L); printf("\n输入要插入的节点的位置和元素:"); scanf("%d %d",&i,&x); InsertDuLinkedList(L,i,x); output(L); printf("\n输入要删除哪一位置上的元素:"); scanf("%d",&i); DeleteDuLinkList(L,i); output(L); printf("\n当前链表的长度为%d",CountDuLinkList(L)); return 0; }
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- struts学习
- 时序列数据库武斗大会之什么是 TSDB ?
- iOS免费注册邓白氏码
- 基于modern ui for wpf的在线公开课平台 之一(说在前面)
- struts2的零配置
- eclipse使用mybatis generator自动生成代码报错Generation Warnings Occured Project E: does
- 本地源的搭建(Apt、Pypi、Rubygem)
- 【codevs1916】负载平衡问题 费用流
- SmartClient之Server Framework
- Apache_日志分类及作用
- Unity:Unity Trigger Action - used to wire up actions to trigger events
- 第一篇博客
- 拍照上传
- 软件工程个人作业01
- ssh 应用
- 老师喜欢的学生
- Linux ssh安全设置
- Memcached多台服务器多节点负载均衡测试
- python之metaclass+singleton(一)