练习线性结构answer_第1页
练习线性结构answer_第2页
练习线性结构answer_第3页
练习线性结构answer_第4页
练习线性结构answer_第5页
全文预览已结束

下载本文档

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

文档简介

1、线性结构 综合练习2二、编写算法题(阅读算法,填充空格,使其成为完整的算法)1, 下列函数求单链表的长度Status length (LinkList & L, int & len ) p = L->next; j = 1; if (!p) len = 0; while (p->next) j = j+1;p = p->next; len = j; return OK;2, 设x, y是两个表示成单链表的串,下列算法找出x中第1个在y中出现的字符,并用e返回(假设每个结点只存放一个字符)。typedef chnode chardata;chnode * lin

2、kchnode, *ctr;void ds (ctr x, ctr y, char &e) px = x->link;while (px) py = y -> link; while (py && px->data != py->data ) py = py -> link; if (!py ) px = px->link;/ px不在py中出现, 下一个pxelse px = NULL;if (!py) e = 0;else e = py -> data;3, 本算法的功能是将带头结点的单链表L中的结点前后次序颠倒一下(不包括

3、头结点)。# include “stdio.h”# include “stdlib.h”# define MAXSIZE 10typedef struct Lnode float data;struct Lnode *link; Lnode, *LinkList;void converse(LinkList &L)LinkList p,q,r,s;p=NULL; q=L->link;while (q)r=q->link; q->link=p;p=q;q=r;L->link=p;4, 假设head1指向带有头结点的单链表,现将该单链表复制一个。typedef st

4、ruct pnode elemtpdata;struct pnode* next; pnode, * pointer;status copy (pointer head1, pointer & head2) head2 = (pointer) malloc (sizeof (pnode);/ 建立一个头结点 q = head2; p = head1->next; while (p!=NULL) / 复制一个新结点 s = (pointer) malloc (sizeof (pnode);s->data = p->data;q->next = s;p = p-&g

5、t;next;q = q->next;/ p, q各向后移动一个结点 q->next = NULL;或 s-next=NULL;/ 置最后一个结点的next域 return OK;5, 假设向量中的元素按值非递减有序排列,现删除向量中多余的值相同的元素。void del (int an) i = 0; while ( i < n 1 ) if (ai!=ai+1) i +;else for (j = (i+2); j< n; j+) Aj-1 = Aj; n = n-1; 6, 假设有两个已排序的单链表a,b,现将它们合并成一个链表c,且不改变其有序性。typedef

6、struct pnode datatypedata; struct pnode* next;pnode, *pointer;void merg (pointer a, pointer b, pointer &c) h = (pointer) malloc (sizeof (pnode); h->next = NULL; r = h; p = a->next; q = b->next; while (p!=NULL) && (q!=NULL) if (p->data<=q->data) r->next = p; p = p->

7、;next;r = r->next; else r->next = q; r = r->next; q = q->next; if (q!=NULL) (or P = NULL) r->next = q; if ( p ) r->next = p; c = h;free(a); free(b);7, 用单链表表示队列如下图,并令front = NULL表示队列空,则下列程序进行进队操作。fronta1a2anreartypedef struct pnode datatypedata; struct pnode* next;pnode, *pointer;vo

8、id ds52(pointer & front, pointer & rear; int x) if (rear = NULL) rear = (pointer) malloc (sizeof (Lnode); rear->data = x; rear->next = NULL; front = rear;else p = (pointer) malloc (sizeof (Lnode); p->data = x; p->next = NULL; rear->next = p;rear = p; 8, 假设head指向单链表的表头,p为表中某一结点

9、,现交换p所指结点和其后序结点的位置。typedef struct pnode datatypedata; struct pnode* next;pnode, *pointer;void ds54(pointer &head, pointer p) q = p->next; if (q != NULL) if (p = head) head = head->next;p->next = q->next;q->next = p;p->data = q->data; else r = head; while (r->next != p) r

10、= r->next;r->next = q;p->next = q->next;q->next = p; else printf (“不存在要交换的下一个结点”);9, 假设线性表的元素按递增顺序排列,并以带头结点的单链表作存储结构,本算法是删除表中所有值大于min且小于max的元素(若表中存在这样的元素)。typedef struct pnode datatypedata; struct pnode* next;pnode, *linklist;void delete(linklist &head, int min, int max) if (head != NULL) q=head; p=he

温馨提示

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

评论

0/150

提交评论