数据结构上机考试(含答案).doc
上传人:王子****青蛙 上传时间:2024-09-14 格式:DOC 页数:30 大小:84KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

数据结构上机考试(含答案).doc

数据结构上机考试(含答案).doc

预览

免费试读已结束,剩余 20 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《数据结构》上机练习题1、设有两个有序序列,利用归并排序将它们排成有序表,并输出。2、设有一有序序列,从键盘输入一个数,判别就是否在序列中,如果在输出“YSE”;否则,将它插入到序列中使它仍然有序,并输出排序后得序列。3、设有一有序序列,从键盘输入一个数,判别就是否在序列中,如果不在,则输出“NO",否则,将它从序列中删除它,并输出删除后得序列.4、从键盘输入一组任意数据,建立一个有序链表,并从链头开始输出该链,使输出结果就是有序得。5、从键盘输入一组任意数据,建立一个包含所有输入数据得单向循环链表,并从链表得任意开始,依次输出该链表中得所有结点。10、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别就是否在链表中,如果不在,则输出“NO“,否则,将它从链表中删除,并输出删除后得链表。11、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别就是否在链表中,如果在输出“YSE”,否则,将它从插入到链头,并输出插入后得链表。12、设有一个链表,(自己建立,数据从键盘输入),再从键盘输入一个数,判别就是否在链表中,如果在输出“YSE”,否则,将它从插入到链尾,并输出插入后得链表。13、编写栈得压栈push、弹栈pop函数,从键盘输入一组数据,逐个元素压入堆栈,然后再逐个从栈中弹出它们并输出。14、编写栈得压栈push、弹栈pop函数,用它判别()得匹配问题。15、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树中序遍历得结果.16、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树先序遍历得结果。17、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树后序遍历得结果。18、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树得总结点数。19、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出二叉树叶子结点数。20、按类似先序遍历结果输入一序列,建立一棵二叉树(算法6、4),输出此二叉树得高度。21、给出一个无向图得邻接矩阵,输出各个顶点得度。22、给出一个有向图得邻接矩阵,输出各个顶点得入度与出度。23、输入一个有序序列,利用折半查找来查找一个数就是否在序列中,如在,则输出其位置,否则输出“NO"。24、用插入排序方法对一组数据进行排序,并输出每趟排序得结果.25、用选择排序方法对一组数据进行排序,并输出每趟排序得结果。26、用希尔(SHELL)排序方法对一组数据进行排序,并输出每趟排序得结果。27、用快速排序方法对一组数据进行排序,并输出每趟排序得结果。。答案:1、#include<stdio、h>#include<stdlib、h>#defineN5#defineNULL0//链表得存储结构typedefstructLNode{intdata;ﻩstructLNode*next;}LNode,*list;//顺序创建链表voidcreatList(list&l,intn){ﻩinti;listp,q;l=(list)malloc(sizeof(LNode));//开辟头结点ﻩp=l;//指针p指向头结点ﻩfor(i=0;i〈n;i++){q=(list)malloc(sizeof(LNode));//新得结点ﻩﻩscanf(”%d”,&q->data);ﻩp—〉next=q;//p得下一个结点指向新开辟得结点qp=q;//将p指针指向qﻩ}p->next=NULL;}//归并排序voidmergeList(list&la,list&lb,list&lc){//将已经排好序得la,lb中得数重新排列成有序(非递减)listpa,pb,pc;ﻩpa=la—>next;pb=lb->next;lc=pc=la;//默认将la做为lc得头结点(lb亦可)ﻩwhile(pa&&pb){//让pc接到数据小得结点上,直到pa,pb两者有一指向空结点if(pa—>data〈=pb—〉data)ﻩ{pc-〉next=pa;pc=pa;pa=pa->next;}ﻩelseﻩ{pc—>next=pb;pc=pb;pb=pb->next;}}pc->next=pa?pa:pb;//如果最后la有剩余结点,即将其直接加入到lc中,反之将lb得剩余结点加到lc中free(lb);}voidprintList(listl){listp;ﻩp=l->next;while(p)ﻩ{printf(”%d",p-〉data);p=p—〉next;}