数据结构与算法(线性表)练习题
更新时间:2023-09-30 23:19:01 阅读量: 综合文库 文档下载
三、写一个算法合并两个已排序的线性表。(用两种方法:数组表示的线性表(顺序表)和指针表示的线性表(链表)) 要求:1、定义线性表节点的结构,并定义节点的型和位置的型。 2、定义线性表的基本操作 3、在1,2的基础上,完成本题。 4、在main函数中进行测试:先构建两个有序的线性表,然后合并这两个线性表。
四、已知一个单向链表,试给出复制该链表的算法。
要求:1、定义线性表的节点的结构以及节点的型和位置的型。 2、定义线性表的基本操作
3、在1,2的基础上,完成本题。 4、在main函数中进行测试:先构建一个线性表,并定义一个空线性表,然后进行复制。
五、写出从一个带表头的单链表中删除其值等于给定值x的结点的算法函数: int delete(LIST &L, int x);如果x在该链表中,则删除对应结点,并返回其在链表中的位置(逻辑位置,第一个结点的逻辑位置为1),否则返回-1。 要求:1、定义线性表的节点的结构以及节点的型和位置的型。
2、定义线性表的基本操作
3、在1,2的基础上,完成本题。
4、在main函数中进行测试:先构建一个线性表,然后调用函数删除值等于给定值的节点。
六、写出一个将两个静态链表(属于同一个存储池)合并的算法函数:
void Merge(cursor M, cursor N); 合并的方法是将N链表中的所有结点添加到M链表的后面,并将N链表的表头结点添加到空闲结点链表中。 要求:1、定义静态链表的结点的结构以及结点的型SPACE以及位置(position)和游标(cursor)的型。 2、定义静态链表的基本操作:void Initialize(); 初始化,将所有存储池中的结点设置为空闲;cursor GetNode(); 从空闲链中获取一个结点;void FreeNode(cursor q); 将结点q加入到空闲链; void Insert ( elementtype x, position p, cursor M ); 在链表M中的位置为p的元素后面添加一个值为x的结点;void Delete (cursor M, position p ); 在链表M中删除位置为p的元素的后一个元素。 3、在1、2的基础上完成本题。
4、在main函数中进行测试:先构建一个存储池,然后在该存储池中创建两个静态
表,最后将这两个静态表合并。
七、利用指针表示的线性表(链表)表示一个多项式,并实现两个多项式的相加和相乘运算。假设多项式形式为:A(x)?amtem?am?1xem?1e?...?a1x1
其中,系数ai≠0,指数ei满足em>em-1>…>e2>e1>=0。 要求:1、定义多项式每一项的结构。 2、定义两个多项式的相加和相乘运算函数。 3、在main函数中,构建两个多项式,并测试相加和相乘运算。
八、试编写一个整数进制转换的通用函数convert(int num, STACK S, int n),要求将整数m转换为n进制数,n进制数的各位依次存放在栈S中。并在主函数中进行测试。 要求:1、定义栈以及栈的型。
2、定义栈的各种操作。
3、实现函数convert。 4、在main函数中,通过调用函数convert将num的n进制数存放到一个栈中,并通过出栈的方法输出该n进制数
九、设有一个循环队列Queue,只有头指针front,不设尾指针,另设一个含有元素个数的计数器count,试写出相应的判断队列空、判断队列满、出队算法和入队算法。 要求:
1、定义相应的循环队列的型(只有头指针,没有尾指针,但有一个元素个数的计数器); 2、定义该队列的四个算法:判断队列空、判断队列满、出队算法和入队算法; 3、在main函数验证算法的正确性。
十、设主串T=“abcaabbabcabaacbacba“,模式为p=“abcabaa”。 1、计算模式p的nextval函数值
2、不写算法,只画出利用KMP算法进行模式匹配时,每一趟的匹配过程。 要求:
1、写出模式p的nextval值;
2、画出KMP算法的每一趟匹配过程(可参照教材P61从第8行开始的内容); 3、不需要编写程序。
十一、假设表达式中允许包含三种括号:圆括号、方括号和大括号。设计一个算法采用顺序栈(用数组表示的栈)判断表达式中的括号是否正确配对。 要求:
1、定义栈以及栈的型,栈中所存放元素的类型为字符型,定义枚举类型Boolean,其中两个元素分别为TRUE和FALSE。
2、定义栈的各种操作。
3、定义函数Boolean check(char *s); 判断s中的括号是否正确配对,如果正确配对,返回TRUE,否则返回FALSE。
4、在主函数中验证所编写函数的正确性。
十二、设有一个带头结点的双向链表h,设计一个算法用于查找第一个元素之为x的结点,并将其与其前驱结点进行交换。 要求:
1、定义带头结点的双向链表的型DLIST。 2、定义双向链表DLIST的基本操作。
3、定义函数int swap(elementtype x, DLIST &h),查找第一个元素之为x的结点,如果在链表中存在元素值为x的结点,并其与其前驱结点进行交换,并返回1,否则返回0。 4、在主函数中测试所编写函数的正确性。
十三、试编写一个求三元组顺序表示的稀疏矩阵对角线元素之和的算法
十四、当具有相同行值和列值的稀疏矩阵A和B均以三元组顺序表方式存储时,试写出矩阵相加的算法,其结果存放在以行逻辑链接顺序表方式存储的矩阵C中。
十五、设有一个稀疏矩阵:
?04?00??80??00?0?7??00?000000000??3001??0000??
5000?0020??6000??0 1、写出三元组顺序表存储表示
2、写出十字链表存储的顺序表示
十六、画出广义表LS=(( ), (e), (a, (b, c, d)))的头尾链表存储结构(类似于教材P70图2-27.9)。 要求:按照教材中的事例画出相应的图形,不需要编程。 其中第一个节点如下:
t
十七、试编写求广义表中原子元素个数的算法。 要求:
1、定义广义表的节点的型; 2、定义广义表的基本操作;
3、定义本题要求的函数int elements(listpointer L);函数返回值为广义表中原子的个数。例如,广义表(a, b, c, d)原子的个数为4,而广义表(a, (a, b), d, e, ((i, j), k))中院子的个数为3。 提示:先利用基本操作Cal(L)获得表头,判断表头是不是原子,再利用基本操作Cdr(L)获得除第一个元素外的其他元素所形成的表L1,利用递归的方法求L1中原子的个数。
要求:
1、上述作业要求在单独完成;
2、完成后,于规定期限内提交到ftp服务器的相应目录中中,注意,在提交时将所编写的程序统一拷贝到一个Word文件中,文件名格式为“学号+姓名” 三(数组表示) #include
position End(LIST L)//线性表长度 { return (L.last+1); }
void Insert(Elementtype x,position p,LIST&L) { position q; if(L.last>=maxlength-1) cout<<\ else if((p>L.last+1)||(p<1)) cout<<\ else { for(q=L.last;q>=p;q--) { L.elements[q+1]=L.elements[q]; } L.last=L.last+1; L.elements[p]=x; } }
void Delete(position p,LIST &L) { position q; if((p>L.last)||(p<1)) cout<<\ else { L.last=L.last-1; for(q=p;q<=L.last;q++) L.elements[q]=L.elements[q+1]; } }
position Locate(Elementtype x,LIST L) { position q; for(q=1;q<=L.last;q++) if(L.elements[q]==x) return q; return(L.last+1); }
void merge(LIST&L,LIST&L1,LIST&L2) { position p=0,p1,p2;
position len1=End(L1); position len2=End(L2); L.last=len1+len2-1; for(p1=0;p1 void read(LIST &L) { cout< void write(LIST &L) { for(int i=0;i int main() { LIST L,L1,L2; read(L1); write(L1); read(L2); write(L2); merge(L,L1,L2); write(L);
正在阅读:
数据结构与算法(线性表)练习题09-30
宝贝详情页的详解06-10
《电工电子学》期末综合复习题09-25
寒假社会实践报告12-12
虔州八景06-30
寒假社会实践报告08-22
我国冷链物流发展存在的问题及对策分析05-25
中国矿业大学电工A 期末测试复习题108-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 练习题
- 线性
- 算法
- 驾校申请报告
- 苏教版五年级数学下册第十单元《圆》填空题期末复习专项练习题
- 爬架施工方案 - 图文
- 季氏将伐颛臾练习卷
- 刚性悬挂作业指导书(客专) - 图文
- 綦江区瑞恩幼儿园工作手册(完整版)
- 马克思复习提纲-最终
- 军事理论答案(江西高校出版社)(最新版)
- 配套K122018-2019学年中考数学专题复习 平方差公式及其应用(含解析)
- 土力学试卷及答案(b)
- 91级生科校友返校新闻稿
- 石家庄市道路货物运输公司名录2018版3161家 -
- 医院内部控制工作经验做法及取得成效
- 电气控制技术与技能训练教案
- 泉峰社区城市网格化管理工作实施方案
- 2016年人教版八年级物理下册期末复习最新试题
- 沿空留巷总结报告fgm - 图文
- 《荷载与结构设计方法》课后思考题答案
- 材料成型基础期末复习习题集
- 饭店管理期末复习6 - 客房定价策略、方法以及收益管理