数据结构课程设计案例(【数据结构】课程设计)
本文目录
【数据结构】课程设计
1.用C++实现删除结点(*p)的辅助函数DeleteHelp:templatte《class KeyType,class OtherInfoType》void BinarySortTree《KeyType,OtherInfoType》::DeleteHelp(BinTreeNode《ElemType《KeyType,OtheInfoType》》*&p){ BinTreeNode《ElemType《KeyType,OtherInfoType》》*tmpPtr,*tmpF; if(p-》leftChild==NULL&&p-》righeChild==NULL){ delete p; p=NULL;}else if(p-》leftChild==NULL){ tmpPtr=p; p=p-》rightChild;delete tmpPtr;]else if(p-》rightChild==NULL){tmpPtr=p;p=p-》leftChild;delete tmpPtr;}else{tmpF=p;tmpPtr=p-》leftChild;while(tmpPtr-》rightChild!=NULL){ tmpF=tmpPtr;tmpPtr=tmpPtr-》rightChild;}p-》data=tmpPtr-》data;if(tmpF-》rightChild==tmpPtr){DeleteHelp(tmpF-》rightChild);}esle { DeleteHelp(tmpF-》leftChildO); } }}2.找到要删除的结点,再调用DeleteHelp删除就行template《class KeyType,class OtherInfoType》bool BinaryTree,KeyType,OtherInType》::Delete(const KeyType&key){BinTreeNode《ElemType,KeyType,OtherInfoType》》*p,*f;p=SearchHelp(key,f);if(p==NULL){ return false;}else{if(f==NULL){ DeleteHelp(p); } else if(key《f-》leftChild);}esle { DeleteHelp(f-》rightChild); } return true; }}
《应用数据结构》课程设计
第一节 地球的自转 1.地球的自转:地球绕地轴不停地旋转的运动。 2.地球自转的方向:自西向东。 (1)从北极上空俯视,地球作逆时针方向旋转。 (2)从南极上空俯视,地球作顺时针方向旋转。(北逆南顺) 3.地球自转的周期:约一天(约24小时)。 4.地球自转产生的现象。 (1)东升西落 (2)昼夜交替 6.昼夜现象:由于地球是一个不发光、不透明的球体,在同一瞬间,太阳只能照亮地球表面的一半,被照亮的一半为白昼,背着太阳的一半为黑夜。 昼夜交替现象:地球不停地自转,昼夜就不断地更替。 5.晨昏线(圈):昼夜半球的分界线,它由晨线和昏线构成。 (1)昏线:随着地球的自转,逐渐由昼变成夜的界线。 (2)晨线:随着地球的自转,逐渐由夜变成昼的界线。 第二节北京的时间和“北京时间“ 1.地方时:因经度不同而不同的时刻,称为地方时,东边的地方时总是比西边的来得早。 2.时区:把全球划分成24个 150经度宽的地区,每个地区就叫做一个时区。 区时:以中央经线的地方时作为全区统一使用的标准时间,即区时,又叫标准时。 区时的计算原则:东加西减 3.北京的时间和“北京时间”。 (1)北京的时间:北京的地方时,即东经1160经线的地方时 (2)北京时间:东八区的区时,即东经1200经线的地方时。 4.日界线:以1800经线为基线,有几处转折的线,称为国际日期变更线,简称日界线。为了使1800经线通过得国家和地区处于同一日期,日界线避免通过陆地,因此它是曲折得。 (1)东十二区和西十二区的时刻相同,但日期相差一天。 (2)从西十二区越过日界线进入东十二区,日期要增加一天,反之就要减去一天。 (3)西十二区在日界线东侧,东十二区在日界线西侧。 (4)自东向西越过日界线,日期要增加一天,反之就要减去一天。 (5)日界线的西侧是地球上新的一天的起点。 第三节地球的绕日运动 1. 地球的公转:地球自西向东绕太阳不停地旋转,周期为365.2422天 2. 太阳高度:太阳光与地面的交角,叫做太阳高度角,简称太阳高度。 (1)一天中太阳高度中午最大,杆影最短。 (2)一年中,正午太阳高度夏季最大,杆影最短。 (3)同一时间,太阳高度从直射点向两侧减小。 3.太阳直射点(太阳高度为900) 春分日(3月21日前后)直射赤道 1一年中,太阳直射点在南北回归线之间来回移动 夏至日(6月22日前后)直射北回归线 2回归线之间的地区:太阳两次直射 秋分日(9月23日前后)直射赤道 3回归线上直射一次 冬至日(12月22日前后)直射南回归线 4其他地区无直射 4.昼夜长短的变化: (1)赤道全年昼夜等长 (2)其他地区:夏至日白天最长,冬至日白天最短,北半球夏至日时,南半球冬至日。 (3)夏季,南极圈,北极圈内出现极昼,冬季出现极夜。 5.五带的划分: 第四节 日历上的科学 1.年、月、日的科学概念。 (1)人们根据地球绕太阳公转 产生的四季交替现象而形成了“年”的概念。 (2)人们根据月亮绕地球公转,产生朔望,形成“月”的概念。 (3)人们根据地球自转所产生的昼夜交替的现象形成了“日”的概念。 2.历法的种类 阳历:以地球绕日公转周期为依据 阴历:以月相变化周期为依据 阴阳历:结合地球绕日公转周期和月相变化周期 公历属于阳历,农历属于阴阳历,农历中的月,属于阴历,农历中的二十四节气属于阳历 3. 闰年(闰日):公元年能被4整除的是闰年,世纪年,能被400整除的是闰年。 公历平年365天,闰年366天,公历闰年多出1天安排在2月,平年2月28天,闰年就29天。 4.二十四节气 我国古代将四季更替的周期分为二十四段,每段(约15日)叫做一个节气, 对人们的生产和生活具有指导和预告的作用。 第五节地壳变动和火山地震 1.地球内部可分为地壳、地幔、地核三层,地壳和地幔的顶部(软流层以上部分)共同组成了岩石圈。 2.地壳变动:悬崖峭壁上岩层断裂的痕迹、采石场上弯曲的岩层、高山上的海洋生物化石、意大利那不勒斯海岸的三根大理石柱的升降、火山和地震。 4.火山和地震 (1)分布:环太平洋带、地中海——喜马拉雅山带 (2)原因:地壳变动 (3)防震自救的措施:发生地震时千万不要慌乱,要冷静、快速地离开房屋,跑到空旷的地方,或躲到面积较小的房间里或桌子下等。 第六节地球表面的七巧板——板块 1.大陆漂移说:魏格纳依据大西洋两岸大陆轮廓的可拼合性和其他依据提出。 2.板快构造学说:在“大陆漂移说”基础上创建。 全球由亚欧板块、非洲板块、美洲板块、南极洲板块、太平洋板块、印度洋板块六大板块组成,漂浮在软流层上,不断地发生碰撞和张裂。板块的碰撞形成了山脉,板块张裂形成了裂谷和海洋,如东非大裂谷和大西洋。板块的碰撞和张裂是引起地壳变动的最主要的原因。 第七节地形和表示地形的地图 1.常见的地形。 地形类型 特 征 山地 海拔高(500米以上),地面起伏明显 丘陵 海拔500米以下,地面起伏较小 平原 海拔高(200米以下),地面起伏小 高原 海拔高(500米以上),地面起伏小 盆地 周围高中间低
数据结构课程设计报告
1、一元稀疏多项式相加 详细设计 4.1 程序头的设计: #include《stdio.h》 #include《malloc.h》 typedef struct pnode {int coef;/*系数 */ int exp;/*指数 */ struct pnode *next;/*下一个指针*/ }pnode; 4.2 用头插法生成一个多项式,系数和指数输入0时退出输入 pnode * creat() {int m,n; pnode *head,*rear,*s; /*head为头指针,rear和s为临时指针*/ head=(pnode *)malloc(sizeof(pnode)); rear=head; /*指向头*/ printf(“input coef:“);/*输入系数*/ scanf(“%d“,&n); printf(“input exp:“);/*输入指数*/ scanf(“%d“,&m); while(n!=0)/*输入0就退出*/ {s=(pnode *)malloc(sizeof(pnode)); s-》coef=n; s-》exp=m; s-》next=NULL; rear-》next=s;/*头插法*/ rear=s; printf(“input coef:“);/*输入系数*/ scanf(“%d“,&n); printf(“input exp:“);/*输入指数*/ scanf(“%d“,&m); } head=head-》next;/*第一个头没有用到*/ return head; } 4.3 显示一个多项式 void display(pnode *head) {pnode *p;int one_time=1; p=head; while(p!=NULL)/*不为空的话*/ { if(one_time==1) {if(p-》exp==0)/*如果指数为0的话,直接输出系数*/ printf(“%d“,p-》coef); /*如果系数是正的话前面就要加+号*/ else if(p-》coef==1||p-》coef==-1) printf(“x^%d“,p-》exp);/*如果系数是1的话就直接输出+x*/ /*如果系数是-1的话就直接输出-x号*/ else if(p-》coef》0)/*如果系数是大于0的话就输出+系数x^指数的形式*/ printf(“%dx^%d“,p-》coef,p-》exp); else if(p-》coef《0)/*如果系数是小于0的话就输出系数x^指数的形式*/ printf(“%dx^%d“,p-》coef,p-》exp); one_time=0; } else{ if(p-》exp==0)/*如果指数为0的话,直接输出系数*/ {if(p-》coef》0) printf(“+%d“,p-》coef); /*如果系数是正的话前面就要加+号*/ } else if(p-》coef==1) printf(“+x^%d“,p-》exp); else if(p-》coef==-1) printf(“x^%d“,p-》exp);/*如果系数是1的话就直接输出+x号*/ else if(p-》coef》0)/*如果系数是大于0的话就输出+系数x^指数的形式*/ printf(“+%dx^%d“,p-》coef,p-》exp); else if(p-》coef《0)/*如果系数是小于0的话就输出系数x^指数的形式*/ printf(“%dx^%d“,p-》coef,p-》exp); } p=p-》next;/*指向下一个指针*/ } printf(“\n“); 4.4 两个多项式的加法运算 pnode * add(pnode *heada,pnode *headb) {pnode *headc,*p,*q,*s,*r; /*headc为头指针,r,s为临时指针,p指向第1个多项式并向右移动,q指向第2个多项式并并向右移动*/ int x; /*x为系数的求和*/ p=heada; /*指向第一个多项式的头*/ q=headb; /*指向第二个多项式的头*/ headc=(pnode *)malloc(sizeof(pnode)); r=headc; /*开辟空间*/ while(p!=NULL&&q!=NULL) /*2个多项式的某一项都不为空时*/ {if(p-》exp==q-》exp)/*指数相等的话*/ {x=p-》coef+q-》coef;/*系数就应该相加*/ if(x!=0)/*相加的和不为0的话*/ {s=(pnode *)malloc(sizeof(pnode));/*用头插法建立一个新的节点*/ s-》coef=x; s-》exp=p-》exp; r-》next=s; r=s; } q=q-》next;p=p-》next; /*2个多项式都向右移*/ } else if(p-》exp《q-》exp)/*p的系数小于q的系数的话,就应该复制q接点到多项式中*/ {s=(pnode *)malloc(sizeof(pnode)); s-》coef=q-》coef; s-》exp=q-》exp; r-》next=s; r=s; q=q-》next;/*q向右移动*/ } else/*p的系数大于q的系数的话,就应该复制p接点到多项式中*/ {s=(pnode *)malloc(sizeof(pnode)); s-》coef=p-》coef; s-》exp=p-》exp; r-》next=s; r=s; p=p-》next;/*p向右移动*/ } } 当第2个多项式空,第1个数不为空时,将第一个数剩下的全用新节点产生 while(p!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-》coef=p-》coef; s-》exp=p-》exp; r-》next=s; r=s; p=p-》next; } 当第1个多项式空,第1个数不为空时,将第2个数剩下的全用新节点产生 while(q!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-》coef=q-》coef; s-》exp=q-》exp; r-》next=s; r=s; q=q-》next; } r-》next=NULL; /*最后指向空*/ headc=headc-》next;/*第一个头没有用到*/ return headc;/*返回头接点*/ 4.5 两个多项式的减法运算,和加法类似,不同的地方已经注释 pnode * sub(pnode *heada,pnode *headb) {pnode *headc,*p,*q,*s,*r; int x; p=heada;q=headb; headc=(pnode *)malloc(sizeof(pnode)); r=headc; while(p!=NULL&&q!=NULL) {if(p-》exp==q-》exp) {x=p-》coef-q-》coef;/*系数相减*/ if(x!=0) {s=(pnode *)malloc(sizeof(pnode)); s-》coef=x; s-》exp=p-》exp; r-》next=s; r=s; } q=q-》next;p=p-》next; } else if(p-》exp《q-》exp)/*p的系数小于q的系数的话*/ {s=(pnode *)malloc(sizeof(pnode)); s-》coef=-q-》coef;/*建立的接点的系数为原来的相反数*/ s-》exp=q-》exp; r-》next=s; r=s; q=q-》next; } else {s=(pnode *)malloc(sizeof(pnode)); s-》coef=p-》coef; s-》exp=p-》exp; r-》next=s; r=s; p=p-》next; } } while(p!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-》coef=p-》coef; s-》exp=p-》exp; r-》next=s; r=s; p=p-》next; } while(q!=NULL) {s=(pnode *)malloc(sizeof(pnode)); s-》coef=-q-》coef;/*建立的接点的系数为原来的相反数*/ s-》exp=q-》exp; r-》next=s; r=s; q=q-》next; } r-》next=NULL; headc=headc-》next; return headc; 4.6 界面设计: printf(“\n ****************************************\n“); printf(“\n ************** 03 Computer *************\n“); printf(“\n ******** Class:two **** Num:34 *********\n“); printf(“\n *********** Name: xie pan **********\n“); printf(“\n ****************************************\n“); printf(“\n --------------1: add -------------\n“); printf(“\n --------------2: sub -------------\n“); printf(“\n --------------3: exit ------------\n“); printf(“\n ****************************************\n“); 4.7 连接程序: case 1:add_main();break;/*加法*/ case 2:sub_main();break;/*减法*/ case 3:break;/*退出*/
关于数据结构的课程设计
.问题的描述: 要求1.给定m〔最大为20〕个字符的出现频率,得到这m个字符的HaffMan编码。2. 任意一个字符序列,得到一个二进制编码序列。对该编码序列进行译码,得到原来的字符序列。二.算法的设计 解决该问题首先要建立haffman树,对叶子结点赋值。文字译码过程:先检索到叶子,然后用一个数组记录从叶子到根的路径(左0右1) 然后采用“先进后出”原则输出数组元素密码译文过程:根据左0右1做到密码对应的叶子结点,输出结点所存字符。三.数据结构的设计结点的设计 struct Htnode{int ww;int parent,llink,rlink;char word;};树结构:struct Httree{struct Htnode ht.ww;......百年天地回元气 一统山河际太平 国泰民安
更多文章:

入门级摩托车(入门级颜值、性价比兼顾的摩托车,看这几款就够了!)
2025年2月21日 19:10

tracetogether(OPPO手机怎么下载tracetogether)
2025年2月15日 16:30

sql server存储过程写法(SQL Server 里需要定时执行某个存储过程,存储过程怎么写)
2025年2月20日 00:30

translated怎么读(“translated”是什么意思)
2025年4月6日 21:10

determined翻译(decided与determined)
2025年2月26日 10:50

mysql管理工具安卓版(最好的mysql界面管理工具是什么)
2025年4月5日 02:10

troubled(troubled, disturbed, confused, puzzled的选择问题)
2025年3月21日 07:20

plm项目管理系统(PLM系统中的项目管理给企业带来哪些效益)
2025年3月3日 08:10

precedent的意思(take precedent是什么意思)
2025年4月5日 22:10