博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
双向链表的算法设计和实现(数据结构)
阅读量:3753 次
发布时间:2019-05-22

本文共 1742 字,大约阅读时间需要 5 分钟。

#include
#include
#define Status int#define ElemType int#define OK 1#define ERROR 0#define OVERFLOW -2typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next;} DuLNode,*DuLinkList;void CreateList_DuL(DuLinkList &L,int n){ DuLinkList p; L=(DuLinkList)malloc(sizeof(DuLNode)); L->prior=L->next=L; for(int i=0; i
data); p->next=L->next; p->prior=L; L->next->prior=p; L->next=p; }}DuLinkList GetElemP_DuL(DuLinkList L,int i){ DuLinkList p; p=L->next; int j=1; while(p&&j
next; j++; } if(!p||j>i) return NULL; return p;}Status ListInsert_DuL(DuLinkList &L,int i,ElemType e){ DuLinkList p,s; if(!(p=GetElemP_DuL(L,i))) { return ERROR; } if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s; return OK;}Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e){ DuLinkList p; if(!(p=GetElemP_DuL(L,i))) return ERROR; e=p->data; p->prior->next=p->next; p->next->prior=p->prior; free(p); return OK;}int main(){ DuLinkList L,p; int n,i; ElemType e; scanf("%d",&n); CreateList_DuL(L,n); for(p=L->next; p!=L; p=p->next) printf("%d ",p->data); printf("\n"); scanf("%d",&i); p=GetElemP_DuL(L,i); printf("e=%d\n",p->data); scanf("%d%d",&i,&e); ListInsert_DuL(L,i,e); for(p=L->next; p!=L; p=p->next) printf("%d ",p->data); printf("\n"); scanf("%d",&i); ListDelete_DuL(L,i,e); for(p=L->next; p!=L; p=p->next) printf("%d ",p->data); printf("\n"); printf("e=%d\n",e); return 0;}

转载地址:http://nrcsn.baihongyu.com/

你可能感兴趣的文章
#剑指offer Day2 一类可以用“框架”快速搞定的二叉树问题
查看>>
#剑指offer Day3 一类 “ 斐波那契 ”问题
查看>>
#剑指offer Day4 一类 “ 双指针 ”问题
查看>>
#剑指offer Day5 # 分享两个题的其他解法
查看>>
缓存淘汰算法的实现与应用介绍(LRU,LFU)
查看>>
JZ15. 反转链表
查看>>
1. 两数之和
查看>>
2. 两数相加
查看>>
JZ1.二维数组的查找
查看>>
String 类
查看>>
什么是接口
查看>>
Java高级篇之进程
查看>>
类加载机制
查看>>
了解jdk1.8版本一些新的特性
查看>>
Java高级篇之网络通讯
查看>>
浅谈篇之线程池
查看>>
Lambda 表达式
查看>>
字符串函数MySQL
查看>>
8个SQL讲解优化
查看>>
MySQL实战续(二)
查看>>