收藏 分销(赏)

数据结构算法设计题及答案.doc

上传人:w****g 文档编号:2221824 上传时间:2024-05-23 格式:DOC 页数:6 大小:59.04KB
下载 相关 举报
数据结构算法设计题及答案.doc_第1页
第1页 / 共6页
数据结构算法设计题及答案.doc_第2页
第2页 / 共6页
数据结构算法设计题及答案.doc_第3页
第3页 / 共6页
数据结构算法设计题及答案.doc_第4页
第4页 / 共6页
数据结构算法设计题及答案.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、(完整word版)数据结构算法设计题及答案数据结构算法设计题及答案 1、 对带表头结点的有序单链表,编写算法向单链表中插入元素x,使其保持有序。答案:typedef datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述void insertOrder(node *head, datatype x) /统计 node *s;p=head;while (p-next -datanext;s=( node *)malloc(sizeof(node) ;s-data=x;s-next= p-next;p-nex

2、t=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 int;struct node /结点结构 datatype data; no

3、de * 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=head;while (q-next!=NULL)&(q-next)-d)!=x)q=q-next;/寻找

4、包含元素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-next; delete head; head=p; return(1); q=head;while (q-next!=NULL)&(q-next)-d)!=x)q=q-next;/寻找包含元素x的前一个

5、结点qif (q-next=NULL)return(0); /链表中无删除的元素p=q-next; q-next=p-next;/删除q的下一个结点pdelete p;/释放结点p的存储空间return(1);4、 对带表头结点的单链表,编写算法统计单链表中大于x的元素个数。答案:typedef datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述int CountX(node *head, datatype x) /统计 int num=0;p=head-next;while (p)if(p-data

6、x) num+ ; p=p-next;return num; 5、 对带表头结点的单链表,编写算法将单链表就地逆置。答案:typedef datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述void 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、 写出链队列的入队、出队的算法。 答案:typede

7、f datatype int;struct node /结点结构 datatype data; node * next; /注:也可以用自然语言描述struct LinkQueue /结点结构 node * front; node * rear; 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 *

8、e) /带头结点的链队列出队if(q-rear= q-front) return 0;p= q-front-next;*e= p-data;q-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

9、) /前序遍历 if(root=NULL) return ; / 空树 printf(%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 )+ numOfL

10、eaf (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(%5d, root-data

11、); 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 100typedef struct KeyType key; OtherType otherDa

12、ta;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.keyk)high= mid-1;elselow= mid+1;Return 0;/查找失败10、 试写一个算法,判别一行字符中的圆括号是否配对。 答案:int BracketMatch(char*str) /圆括号配对判别, 配对返回1,否则返回0Stack s; InitStack(&s); for(i=0; stri; i+)switch( stri ) case (: Push(&s, stri); break; case ): if( IsEmpty(s) ) return 0; Pop(&s); if( IsEmpty(s) ) return 1; return 0;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服