版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.h#ifndefLIST_H_INCLUDED#defineLIST_H_INCLUDED本头文件均为带头结点的单链表,功能函数包括对单链表的单个结点的修改,删除等操作,包含对整个单链表整个操作单链表来实现栈,队列等数据结构*****/typedefintElemType;typedefintStatus;typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;typedefstructLStack{LinkListtop;}LStack,*PLStack;〃单链表实现栈typedefstructLQueue{LinkListFront;LinkListrear;}LQueue,*PLQueue;〃单链表实现队列//单链表操作StatusInitList_L(LinkList&L);//构造一个空的单链表StatusDestroyList_L(LinkList&L);//销毁单链表LStatusClearList_L(LinkList&L);//将单链表置为空表intListLength_L(LinkListL);//求单链表的长度LNode*Search_L(LinkListL,ElemTypee);/查找链表L第一个数据域为e的元素,若不存在则返回NULLLNode*NextElem_L(LinkListp);〃返回p结点的直接后结点的指针,若P结点是尾元素结点,则返回NULLLNode*MakeNode_L(ElemTypee);//构造e结点,返回指向该结点的指针StatusInsertAfter_L(LNode*p,LNode*q);//在p结点之后插入q结点StatusDeleteAfter_L(LNode*p,ElemType&e);//删除结点P直接结点的后继结点,用e返回结点值,若p为空或指向尾结点则操作失败voidListTraverse_L(LinkListL);//遍历单链表//基于单链表的算法voidFind_SortList_L(LinkListL);〃链表中的元素排序,查找排序voidmaopao_SortList_L(LinkListL);//链表中的元素冒泡排序voidFast_SortList_L(LinkListL);//用快速排序对链表元素排序voidInverseList(LinkListL);//单链表的重置。voidMergeList_L(LinkList&La,LinkList&Lb,LinkList&Lc);//将升序的单链表La与Lb归并为新的单链表Lc//链栈StatusInitList_Stack(LStack&S);//初始化一个链栈StatusDestroyList_Stack(LStack&S);//销毁一个链栈StatusStackEmpty_List(LStack&S);//l连栈是否为空voidClearStack_List(LStack&S);//青空链栈StatusPushStack_List(LStack&S,ElemTypee);/往主一个链栈中压入元素eStatusPopStack_List(LStack&S,ElemType&e);//连栈顶元素出栈到eStatusgetTop_StackList(LStack&S,ElemType&e);/去链栈顶元素到e//队列StatusInitList_Queue(LQueue&Q);//初始化一个循环链队voidDestroyList_Queue(LQueue&Q);〃销毁链队voidClearList_Queue(LQueue&Q);//清空链队StatusQueueEmpty_List(LQueue&Q);//对链队判空intQueueLength_List(LQueueQ);//求链队的长度StatusPushQueue_List(LQueue&Q,ElemTypee);//将元素e入队StatusPopQueue_List(LQueue&Q,ElemType&e);//队头元素出队#endif//LIST_H_INCLUDED.cpp#include"List.h"#include<iostream>#include<malloc.h>#defineerror0#defineok1usingnamespacestd;StatusInitList_L(LinkList&L)//初始化一个带头结点的链表{L=(LinkList)malloc(sizeof(LNode));if(NULL==L){coutvv"初始化失败!"vvendl;returnerror;}L->next=NULL;coutvv"初始化成功!"vvendl;returnok;}StatusDestroyList_L(LinkList&L)//销毁链表{LinkListp=L,q;while(p){q=p;p=p->next;free(q);}coutvv"销毁链表!"vvendl;returnok;}StatusClearList_L(LinkList&L)//青空链表{LinkListp=L,q;while(p->next){q=p->next;p=p->next;free(q);}coutvv"清空链表!"vvendl;returnok;}intListLength_L(LinkListL)//求表长度{LinkListp=L;intnum=0;while(p->next){p=p->next;++num;}returnnum;}LNode*Search_L(LinkListL,ElemTypee)//在表中查询是否存在元素e,并返回该元素结点{LinkListp=L->next;while(NULL!=p){if(p->data==e){coutvv"查询成功!"vvendl;returnp;}elsep=p->next;}coutvv"不存在该元素!"vvendl;returnNULL;}LNode*MakeNode_L(ElemTypee)/构造值为e的结点,返回结点指针{LinkListp;p=(LinkList)malloc(sizeof(LNode));if(NULL==p){coutvv"创建结点失败!"vvendl;returnNULL;}elsep->data=e;returnp;}StatusInsertAfter_L(LNode*p,LNode*q)//在p结点之后插入q结点{if(NULL==p||NULL==q)returnerror;q->next=p->next;p->next=q;coutvv"插入成功!"vvendl;returnok;StatusDeleteAfter_L(LNode*p,ElemType&e)/删除结点P直接结点的后继结点,用e返回结点值,若p为空或指向尾结点则操作失败{if(NULL==p){coutvv"删除结点失败!"vvendl;returnerror;}LinkListq;q=p->next;p->next=q->next;free(q);coutvv"删除成功!"vvendl;returnok;}voidListTraverse_L(LinkListL)//遍历单链表{LinkListp=L->next;while(p){coutvvp->datavv"";p=p->next;}coutvvendl;}StatusInitList_Stack(LStack&S)//初始化一个链栈{S.top=(LinkList)malloc(sizeof(LNode));if(NULL==S.top)returnerror;coutvv"Initesuccess!"vvendl;S.top->next=NULL;returnok;}StatusDestroyList_Stack(LStack&S)//销毁一个链栈{LinkListp=S.top,q;while(p){q=p;p=q->next;free(q);}returnok;}StatusStackEmpty_List(LStack&S)/链栈是否为空{if(NULL==S.top->next){coutvv"空栈!"vvendl;returnok;}elsereturnerror;}voidClearStack_List(LStack&S)//青空链栈{LinkListp=S.top->next,q;while(p){q=p;p=p->next;free(q);}}StatusPushStack_List(LStack&S,ElemTypee)/往主一个链栈中压入元素e{LinkListq;q=(LinkList)malloc(sizeof(LNode));q->data=e;q->next=S.top->next;S.top->next=q;coutvv"Pushsuccess!"vvendl;returnok;}StatusPopStack_List(LStack&S,ElemType&e)/链栈顶元素出栈到e{LinkListq=S.top->next;if(NULL==q)returnerror;e=q->data;S.top->next=q->next;free(q);returnok;}StatusgetTop_StackList(LStack&S,ElemType&e)/去链栈顶元素到e{if(NULL==S.top->next)returnerror;e=S.top->next->data;returnok;}StatusInitList_Queue(LQueue&Q)//初始化一个循环链队{Q.Front=(LinkList)malloc(sizeof(LNode));if(NULL==Q.Front)returnerror;Q.Front->next=NULL;Q.rear=Q.Front->next;cout<<"InitListQueuesuccess!"<<endl;returnok;}voidDestroyList_Queue(LQueue&Q)//销毁链队{LinkListp=Q.Front,q;while(p){q=p;p=p->next;free(q);}cout<<"DestroyListQueuesuccess!"<<endl;}voidClearList_Queue(LQueue&Q)//清空链队{LinkListp=Q.Front->next,q;while(p){q=p;p=p->next;free(q);}cout<<"clearListQueuesuccess!"<<endl;}StatusQueueEmpty_List(LQueue&Q)//对链队判空{if(Q.Front->next==Q.rear)returnok;elsereturnerror;}intQueueLength_List(LQueueQ)〃求链队的长度{intnum=0;num=ListLength_L(Q.Front);returnnum;}StatusPushQueue_List(LQueue&Q,ElemTypee)//|将元素e入队{LinkListq;q=(LinkList)malloc(sizeof(LNode));if(NULL==q)returnerror;q->data=e;q->next=NULL;if(Q.rear==NULL)Q.rear=Q.Front;Q.rear->next=q;Q.rear=q;returnok;}StatusPopQueue_List(LQueue&Q,ElemType&e)//队头元素出队{if(QueueEmpty_List(Q))returnerror;LinkListq=Q.Front->next;e=q->data;Q.Front->next=q->next;free(q);returnok;}voidmaopao_SortList_L(LinkListL)〃链表中的元素排序,冒泡排序{ElemTypee;LinkListp=L->next,temp;while(p){temp=p->next;while(temp){if(p->data>temp->data)e=p->data,p->data=temp->data,temp->data=e;temp=temp->next;p=p->next;}voidFind_SortList_L(LinkListL)〃链表中的元素排序,查找排序{LinkListp=L->next,temp,q;ElemTypee
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 31301.1-2026制鞋机械安全要求第1部分:绷帮机
- T/ZJNJ 0028-2024山地连栋钢架大棚
- T/ICMTIA SM0028-2022集成电路用电子级多晶硅
- T/CMEAS 059-2025非血缘脐带血移植中脐带血选择指南
- T/CASME 1604-2025“冻转鲜”糕点生产技术规范
- T/CSES 221-2025全国碳排放权交易市场 水泥行业碳排放联合监测法(及应用规范)
- GB/T 10878-2026气瓶锥螺纹丝锥
- 2025~2026学年广东省汕尾市陆丰市碣石镇人教版三年级上册10月月考数学试卷(一)【附答案】
- 2026学年甘肃省敦煌市四年级数学期末提升重点黑金模拟题附答案详细答案和解析
- PHP基础期末考试试题(含详细答案)
- 2026年注册安全工程师考试化工(中级)安全生产专业实务试卷与参考答案
- 2026年工人进场公司三级安全教育考试题及答案
- 2026年福建省公务员考试申论真题及答案解析
- 塔吊安拆安全技术措施培训课件
- 第6课 古代罗马(课件)-(共50张+视频)统编版(2024)九年级历史上册2
- 2026年成人高考全科试题及答案
- 2026年高级养老护理员职业技能考试练习题附答案
- 23G409先张法预应力混凝土管桩
- (word完整版)高中物理实验读数专题
- 喻国明《传媒经济学教程》笔记和课后习题(含考研真题)详解
- 2015年抗菌药物临床应用指导原则(2015年版)
评论
0/150
提交评论