数据结构算法设计与实现指导(上)ppt.ppt_第1页
数据结构算法设计与实现指导(上)ppt.ppt_第2页
数据结构算法设计与实现指导(上)ppt.ppt_第3页
数据结构算法设计与实现指导(上)ppt.ppt_第4页
数据结构算法设计与实现指导(上)ppt.ppt_第5页
已阅读5页,还剩108页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

int compare(ElemType a, ElemType b) return (a-b); void print(ElemType *c) printf(“%d “,*c); Status NextElem(SqList L,ElemType cur_e,ElemType *next_e) int i=1; ElemType *p=L.elem; while(idata = e; return OK; 释放一个结点 void FreeNode(Link *p) free(*p); *p=NULL; 初始化生成一个空的带头结点的线性链表 Status InitList(LinkList *L) Link p; p=(Link)malloc(sizeof(LNode); if(p) p-next=NULL; (*L).head = (*L).tail = p; (*L).len = 0; return OK; else return ERROR; 取头结点 Position NextPos(Link p) return p-next; 在这个函数的处理中,L是线性链表,h是 头结点,s是要插入的结点,需要注意的是 当在空的线性链表中插入第一个结点时, 需要修改线性链表的尾指针,因为当一个 线性链表为空时,它的尾指针和它的头指 针的指向是一样的,都指向头结点。如图 2.3所示。 Status InsFirst(LinkList *L,Link h,Link s) s-next=h-next; h-next=s; if(h=(*L).tail) (*L).tail=h-next; (*L).len+; return OK; Status ListTraverse(LinkList L,void(*visit)(ElemType) Link p=L.head-next; int j; for(j=0;jdata); p=p-next; printf(“n“); return OK; 合并两个非递减的线性链表 else DelFirst( InsFirst(Lc,(*Lc).tail,q); pb=NextPos(hb); if(!ListEmpty(La) Append(Lc,pa); else Append(Lc,pb); FreeNode( FreeNode( return OK; main() LinkList La,Lb,Lc; int len_a,len_b; int i, inputdata; clrscr(); InitList( printf(“Please input LinkListA length:“); scanf(“%d“, printf(“LinkListA elements:“); for(i=1;i=len_a;i+) scanf(“%d“, ListInsert_L( ListTraverse(La,print); printf(“Please input LinkListB length:“); scanf(“%d“, printf(“LinkListB elements:“); InitList( for(i=1;i=len_b;i+) scanf(“%d“, ListInsert_L( ListTraverse(Lb,print); InitList( MergeList_L(La,Lb, printf(“Lc=“); ListTraverse(Lc,print); DestroyList( while (1) if (strlen(chs)=1) ch=chs0; switch (ch) case 1: printf(“Please input element length(1-%d):“,MAXQSIZE-1); scanf(“%d“, if(len=MAXQSIZE-1) ClearQueue( for(i=0;ilen;i+) scanf(“%d“, EnQueue( QueueTraverse(Q,print); else printf(“Input Error!“); break; case 2:if(QueueEmpty(Q)=TRUE) printf(“Queue is Empty!“); else printf(“nOutput elelment:n“); QueueTraverse(Q,print); break; case 3:if(Q.rear+1)%MAXQSIZE = Q.front) printf(“The Queue is full! Can not insert!“); else printf(“Input Queue element:“); scanf(“%d“, EnQueue(QueueTraverse(Q,print); break; case 4:if(QueueEmpty(Q)=TRUE) printf(“The Queue is empty! Can not delete!“); else DeQueue( if(QueueEmpty(Q)=TRUE) printf(“The element has been deleted and Queue is empty now!“); else QueueTraverse

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论