2015年大二上-数据结构-链表(4)-双链表算法库
来源:互联网 发布:淘宝100元左右的鼠标 编辑:程序博客网 时间:2024/06/14 11:09
DLinkList.h
/* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:Annpion.cpp *作者:王耀鹏 *完成日期:2015年11月4日 *版本号:v1.0 * *问题描述:双链表算法库头文件。 *输入描述:无。 *输出描述:无。 */ #ifndef DLINKLIST_H_INCLUDED#define DLINKLIST_H_INCLUDEDtypedef int ElemType;typedef struct DLNode{ ElemType data; struct DLNode *prior; struct DLNode *next;}DLinkList;void CreateListF(DLinkList *&L,ElemType a[],int n);//头插法建双链表void CreateListR(DLinkList *&L,ElemType a[],int n);//尾插法建双链表void InitList(DLinkList *&L); //初始化双链表void DestroyList(DLinkList *&L); //销毁双链表bool ListEmpty(DLinkList *L); //判断链表是否为空int ListLength(DLinkList *L); //求链表的长度void DispList(DLinkList *L); //输出链表bool GetElem(DLinkList *L,int i,ElemType &e); //获取节点的值int LocateElem(DLinkList *L,ElemType e); //查找一个节点bool ListInsert(DLinkList *&L,int i,ElemType e) ;//插入一个节点bool ListDelete(DLinkList *&L,int i,ElemType &e); //删除一个节点#endif // DLINKLIST_H_INCLUDED
DLinkList.cpp
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Annpion.cpp*作者:王耀鹏*完成日期:2015年11月4日*版本号:v1.0**问题描述:双链表算法库源文件。*输入描述:无。*输出描述:无。*/#include "DLinkList.h"#include <malloc.h>#include <stdio.h>void CreateListF(DLinkList *&L,ElemType a[],int n){ DLinkList *p; L=(DLinkList *)malloc(sizeof(DLinkList)); L->prior=L->next=NULL; for(int i=0; i<n; ++i) { p=(DLinkList *)malloc(sizeof(DLinkList)); p->data=a[i]; p->next=L->next; if(L->next!=NULL) L->next->prior=p; L->next=p; p->prior=L; }}void CreateListR(DLinkList *&L,ElemType a[],int n){ DLinkList *q,*p; L=(DLinkList *)malloc(sizeof(DLinkList)); L->next=L->prior=NULL; q=L; for(int i=0; i<n; ++i) { p=(DLinkList *)malloc(sizeof(DLinkList)); p->data=a[i]; q->next=p; p->prior=q; q=p; } q->next=NULL;}void InitList(DLinkList *&L){ L=(DLinkList *)malloc(sizeof(DLinkList)); L->next=L->prior=NULL;}void DestroyList(DLinkList *&L){ DLinkList *q,*p=L; while(p!=NULL) { q=p->next; free(p); p=q; }}bool ListEmpty(DLinkList *L){ return (L->next==NULL);}int ListLength(DLinkList *L){ DLinkList *p=L->next; int i=1; while(p->next!=NULL) { ++i; p=p->next; } return i;}void DispList(DLinkList *L){ DLinkList *p=L->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n");}bool GetElem(DLinkList *L,int i,ElemType &e){ DLinkList *p=L->next; int j=1; while(i>j && p!=NULL) { p=p->next; ++j; } if(p==NULL) return false; else { e=p->data; return true; }}int LocateElem(DLinkList *L,ElemType e){ DLinkList *p=L->next; int i=1; while(p->data!=e && p!=NULL) { p=p->next; ++i; } if(p==NULL) return 0; else return i;}bool ListInsert(DLinkList *&L,int i,ElemType e){ DLinkList *p=L->next,*q; int j=1; while(j<i-1 && p!=NULL) { p=p->next; ++j; } if(p==NULL) return false; else { q=(DLinkList *)malloc(sizeof(DLinkList)); q->data=e; q->next=p->next; if(p->next!=NULL) { p->next->prior=q; } q->prior=p; p->next=q; return true; }}bool ListDelete(DLinkList *&L,int i,ElemType &e){ DLinkList *p=L->next,*q; int j=1; while(j<i-1 && p!=NULL) { p=p->next; ++j; } if(p==NULL) return false; else { q=p->next; if(q==NULL) return false; e=q->data; p->next=q->next; if(q->next!=NULL) q->next->prior=p; free(q); return true; }}
main.cpp
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Annpion.cpp*作者:王耀鹏*完成日期:2015年11月4日*版本号:v1.0**问题描述:双链表算法库算法库采用程序的多文件组织形式。*输入描述:无。*输出描述:输出长度和插入数后的链表。*/#include <stdio.h>#include "DlinkList.h"int main(){ DLinkList *A; ElemType a[]= {1, 3, 2, 9, 0, 4, 5 ,6, 7, 8}; InitList(A); CreateListF(A, a, 10); printf("length: %d\n", ListLength(A)); ListInsert(A, 4, 12); printf("After Insert: "); DispList(A); DestroyList(A); return 0;}
运行结果:
0 0
- 2015年大二上-数据结构-链表(4)-双链表算法库
- 2015年大二上-数据结构-链表(3)-单链表算法
- 2015年大二上-数据结构-图-2-(4)-Floyd算法
- 2015年大二上-数据结构-链表(2)- 建设“单链表”算法库
- 2015年大二上-数据结构-栈(1)-顺序栈算法库
- 2015年大二上-数据结构-栈(2)-链栈算法库
- 2015年大二上-数据结构-队列(1)- 顺序环形队列算法库
- 2015年大二上-数据结构-队列(2)- 链队算法库
- 2015年大二上-数据结构-串(1)- 顺序串算法库
- 2015年大二上-数据结构-串(2)- 链串算法库
- 2015年大二上-数据结构-数组与广义表(4)-广义表算法库及应用
- 2015年大二上-数据结构-链表(1)-建立单链表
- 2015年大二上-数据结构-链表(7)-多项式求和
- 2015年大二上-数据结构-栈(4)- 数制转换
- 2015年大二上-数据结构-队列(4)- 队列数组
- 2015年大二上-数据结构-串(4)- 字符串加密
- 2015年大二上-数据结构-图-2-(1)-Prim算法
- 2015年大二上-数据结构-图-2-(2)-Kruskal算法
- 《leetCode》:Letter Combinations of a Phone Number
- ArrayDeque 源码
- android 非root实现静默安装
- 我遇到的kinect for windows2 USB不识别情况
- 单链表的反转
- 2015年大二上-数据结构-链表(4)-双链表算法库
- hdu5536
- Servlet学习笔记_03_使用servlet编写一个简单的helloworld程序
- 关于AFNetworking的一种错误!
- ubuntu 下如何使用svn
- arcgis锁
- 参数估计(续)
- 线程的优先级别
- 基本数据类型的转换和表示方法