




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上数据结构算法设计题及答案 1、 对带表头结点的有序单链表,编写算法向单链表中插入元素x,使其保持有序。答案:typedef datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述void insertOrder(node *head, datatype x) /统计 node *s;p=head;while (p->next ->data<x)p=p->next;s=( node *)malloc(sizeof(node) ;s->data=x;s-
2、>next= p->next;p->next=s; 2、 对带表头结点的单链表,编写算法求单链表的长度。答案:typedef datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述int Length(node *head) / 求单链表的长度 int num=0;node *p=head->next;while (p)num+ ; p=p->next;return num; 3、 试写出单链表的插入与删除算法,并用C编写相应的程序。答案:typedef datatype i
3、nt;struct node /结点结构 datatype data; node * next; 单链表的插入参考算法: /在包含元素x的结点前插入新元素bvoid ins_linked_LList(node * head , datatype x, datatype b) node *p, *q;p=new node ;/申请一个新结点p->d=b;/置新结点的数据域if (head=NULL)/原链表为空head=p; p->next=NULL; return;if (head->d=x)/在第一个结点前插入p->next=head;head=p;return; q
4、=head;while (q->next!=NULL)&&(q->next)->d)!=x)q=q->next;/寻找包含元素x的前一个结点qp->next=q->next;q->next=p;/新结点p插入到结点q之后return;单链表的删除参考算法: int del_linked_LList(node * head ,T x) /删除包含元素x的结点元素node *p, *q;if (head=NULL) return(0); /链表为空,无删除的元素if (head->d)=x)/删除第一个结点p=head->nex
5、t; delete head; head=p; return(1); q=head;while (q->next!=NULL)&&(q->next)->d)!=x)q=q->next;/寻找包含元素x的前一个结点qif (q->next=NULL)return(0); /链表中无删除的元素p=q->next; q->next=p->next;/删除q的下一个结点pdelete p;/释放结点p的存储空间return(1);4、 对带表头结点的单链表,编写算法统计单链表中大于x的元素个数。答案:typedef datatype in
6、t;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述int CountX(node *head, datatype x) /统计 int num=0;p=head->next;while (p)if(p->data>x) num+ ; p=p->next;return num; 5、 对带表头结点的单链表,编写算法将单链表就地逆置。答案:typedef datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述voi
7、d ReverseList(node *head) / 将单链表就地逆置 node *q, *p=head->next;head->next=NULL;while (p)q=p;p=p->next;q->next= head->next;head->next=q ; 6、 写出链队列的入队、出队的算法。 答案:typedef datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述struct LinkQueue /结点结构 node * front; node * re
8、ar; int EnterQueue(LinkQueue *q, datatype e) /带头结点的链队列入队q->rear->next=( node *)malloc(sizeof(node);q->rear->data=e;q->rear= q->rear->next;return 1;int DeleteQueue(LinkQueue *q, datatype *e) /带头结点的链队列出队if(q->rear= q->front) return 0;p= q->front->next;*e= p->data;q-
9、>front->next=p->next;free(p);if(q->front->next=NULL)q->rear= q->front;return 1;7、 编写算法对二叉链表存储的二叉树进行前序遍历,并统计二叉树中叶子结点数。答案:typedef datatype int;struct node /结点结构 datatype data; node * lchild, *rchild; /注:也可以用自然语言描述void preOrder(node* root) /前序遍历 if(root=NULL) return ; / 空树 printf(&
10、quot;%5d", root->data); preOrder (root->lchild );/ 前序遍历根的左子树 preOrder (root->rchild ); / 前序遍历根的右子树 int numOfLeaf (node* root) /统计二叉树中结点总数 if(root=NULL) return 0; / 空树 if(root->lchild =NULL)&& (root->rchild =NULL) ) return 1; / 叶子 return numOfLeaf (root->lchild )+ numOf
11、Leaf (root->rchild ); /说明:算法的表达形式及方法多种多样,不可拘泥于固法。8、 对以二叉链表存储的二叉树,编写对二叉树进行中序遍历的算法,以及求二叉树高度的算法。答案:typedef datatype int;struct node /结点结构 datatype data; node * lchild, *rchild; /注:也可以用自然语言描述void inOrder(node* root) /前序遍历 if(root=NULL) return ; / 空树 inOrder (root->lchild );/ 中序遍历根的左子树 printf("
12、;%5d", root->data); inOrder (root->rchild ); / 中序遍历根的右子树 int height (node* root) /求二叉树的高度 int h1,h2 if(root=NULL) return 0; / 空树 h1=height (root->lchild );h2= height (root->rchild );return 1+(h1>=h2)?h1:h2; /说明:算法的表达形式及方法多种多样,不可拘泥于固法。9、 编写对有序顺序表的折半查找算法。 答案:#define MaxSize 100type
13、def struct KeyType key; OtherType otherData;datatype; struct SeqList /结点结构 datatype dataMaxSize; /0号单元不用 int len; int BinSearch(SeqList SL, KeyType k) low=1, high=SL.len;while(low<=high) mid=( low+high)/2; if(SL.datamid.key=k) return mid; /查找成功 if(SL.datamid.key<k)high= mid-1;elselow= mid+1;Return 0;/查找失败10、 试写一个算法,判别一行字符中的圆括号是否配对。 答案:int BracketMatch(char*str) /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精准锁定2024年CAD工程师认证考试试题及答案
- 2025屋顶隔热合同、与工长签订
- 公司整体租赁合同范例
- 设计师考试爰与实践分析试题及答案
- 2014产品预售合同范例
- 企业对接平台合同范例
- 专卖店合同范例
- 2025关于家居电路改造的合同
- 串货合同样本样本
- 三改合同范例
- 冀教英语六年级下册作文范文
- Continual Improvement持续改进程序(中英文)
- 10x2000对称式三辊卷板机设计机械毕业设计论文
- RCA应用于给药错误事情的分析结果汇报
- 申论答题纸-方格纸模板A4-可打印
- 土石方测量方案完整版
- 律师事务所劳动合同范本2(律师助理和实习律师参照适用
- 可以复制、输入文字的田字格WORD模板++(共11页)
- 施工单位动火申请书内容
- 焊条电弧焊基础知识二
- 不锈钢板墙面施工工艺
评论
0/150
提交评论