1 / 17
文档名称:

西电机电院软件技术基础大作业.docx

格式:docx   大小:143KB   页数:17页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

西电机电院软件技术基础大作业.docx

上传人:iris028 2019/5/4 文件大小:143 KB

下载得到文件列表

西电机电院软件技术基础大作业.docx

文档介绍

文档介绍:上机报告班级:04103201姓名:赵伟学号:04103123一、上机目的:明确线性表和树的相关用法,写出相应的程序,实现相应所需的功能。二、,编写完成下列功能的算法:①找出最小值结点,且打印该数值;②若该数值是奇数,则将其与直接后继结点的数值交换;③若该数值是偶数,则将其直接后继结点删除。:①建立一个数据域为1至10的带头结点的链表;②将此链表就地逆转。、英文字母和其它字符的单链表,试编写一个算法将该单链表拆分为三个单链表,使每个单链表中只包含同一类的字符,要求利用原表中的结点空间作为这三个表的结点空间,头结点可以另辟空间。,试按价格从高到低的次序建立一个循环链表,每个结点有价格、数量和指针三个域。现新到10台价格为4000元的电视机,修改原链表并输出修改后链表的所有内容。。例如,‘abba’,‘abcba’都是回文,‘ababab’不是回文,试编写程序判别从标准输入读入的以’@’为结束符的字符序列是否是回文。,求二叉树的结点数目和叶子结点数目。三、,单链表中的每一个节点储存一个整数,从前到后遍历一遍链表找出最小值,若该值是奇数,则将最小值节点与其后节点交换,若该值是偶数,则将其后节点删除。,从头结点开始,数据域依次是1到10。再按照头插法的思想,从第二个节点还是,依次把其后的节点,插到头节点的后面。即可将链表逆转。。其中一个链表用来存输入的数据,其余三个链表置空,从前到后遍历一遍原始链表,若数据域是数字,则继续遍历该链表。若数据域是英文字母或是其它字符,则将其从原来的链表中删除,并把它分别插入到其它两个链表中。,链表的数据域为商品的价格和数量,最后插入(4000,10)节点。从前到后遍历这个链表,若链表中存在一个节点,其数据域的价格为4000,则数量再加上10即可,若不存在,按照链表的顺序将该节点插入。,从键盘上输入字符串,从第一个节点和最后一个节点依次向中间比较。若发现不同。则比较结束,该字符串不是回文,否则,是回文。,每遍历到一个节点,就将节点数加1,若节点的左右孩子节点的数据域为0,、,要充分考虑到各种可能出现的情况。比如说,当有多个最小值时,需要依次与其后的节点进行操作;再如,到最小值在最后一个节点时,就不能进行任何处理了。时间复杂度:O(n)。。时间复杂度:O(n)。,否则可能没法正常退出。时间复杂度:O(n)。,链表中是否有数据域为4000的节点,有的话就不用再新建了。时间复杂度:O(n)。。时间复杂度:O(n)。,叶子节点的定义。否则,程序无法判断节点是否为叶子节点。时间复杂度:O(n)。五、、源程序:1.#include<>#include<>typedefintdatatype;typedefstructnode{ datatypedata; structnode*next;}linklist;linklist*head,*p;linklist*creatlistr1(); /*尾插法*/voidDelete(linklist*p,linklist*head);linklist*locate(linklist*head,datatypekey);voidoutput(linklist*p);intmain(){ intMin; linklist*pMin=(linklist*)malloc(sizeof(linklist)); printf("请输入单链表,并以-1结束:\n"); head=creatlistr1(); Min=head->next->data; p=head->next->next; while(p!=NULL) { if(Min>p->data) { Min=p->data; pMin=p; } p=p->next; } printf("最小值为:%d\n",Min); p=head; while((p=locate(p,Min))!=NULL) { if(p->next!=NULL) { if(Min%2) { (p->data)^=(p->next->data)^=(p->data)^=p->next->data; } else { Del