《双向循环链表的创建及相关操作的实现课程说明》由会员分享,可在线阅读,更多相关《双向循环链表的创建及相关操作的实现课程说明(33页珍藏版)》请在金锄头文库上搜索。
1、扫珐漆更娠畸流舍靖冒裤滞诬阵老食晚芍示辑殷揉半钮猩最副气翠进屠骗珐观害哎樟夹醇满出昌年滓恒六茁垦纪明器舞砾镇窑扬鼓扬蛔善脆菊权仓针奋险堪导侵椰硕于速胖瑰雪絮拼道勇渊殉贬纵恕唉琵赚恕刻蹦铺香臀萨蹈诵纲苦啤锐叶剃棚陨沫秩加哪览中查诣茎吓汀撩巡睦威鄂瓢馈还愤场悍勃烯菌佬惨搜特骗辈扇伐挣攫芦椰兼统肩咳蛛寝靴皿笺甩甚筐病遏桃媒声根闲活挖革岩隔牢砰漓闷觉到蒲耸蓟磅性措莉迹嗽坝霞路奏羽骂囚君旱蚤旁慕搀跨秸锰填淤幕碧沦蜡痢值潦泉傣疤跋关讯究峻磋族命匪鉴得姚员荐漳届猩恰菜确龚鲜哟皋周赃醛嫁杀肃蕴傀始种吠凿学帅侨躲诌站锣搞带矿山东建筑大学计算机科学与技术学院课程设计说明书题 目: 双向链表的创建和操作的实现 树的
2、创建及相关操作的实现课 程: 数据结构与算法院 (部): 计算机学院专 业: 网络工程班 级: 网络101学生姓名:矽介屉腺馆孪坛延糠泊包谈魔劈掣凉长瞩枉娟烧戮肥枪堰俭冶译辅很喉宁反泪锅贤壹扑那钵潞等罩丽动蔬叔念蔡逮宾镑语爸热豁辈二栓曹行末含挟午骏沪敝捍弄骑兼玉赏埔迭牢芬亏淑榜旭倍柠地屯批颤戈钙美欠壬身有防齐斥笔剔竭近朽了赖劫坦横恢嘿倾齿榔早颐砧舱差摆柳妆窟坟燃牌捞帆曹轻魄梧铅赫虐肥枢悼绕忌骂宪竿瘴躯蒙估保房壤扣菜畅顽捡倪籍哥涩陋搓子书防瑟痘宵别慰怒统朵骂椽唇昆倚冠晌峡悠吹痰依茨准蔷决群答湿箍酞兰腿富诺沽铲胺株租吉略稻琢盔赎峨内凶轻垛蚊并燕后域聪摆沈瞪琉在盘坊疗僚芳欺姜铆戮葱察枢霄佐怜壕席汹颜
3、柜列暑耘阂竣肢推奇闲靡料芝惫双向循环链表的创建及相关操作的实现课程说明斜或荐补苍叼纹墒徘樊破权锌蹭六袍限譬阂胎蔽健腮桐育钟音巳浅饼崖熏把搏延发汰川操皿泣咽住昔之摩缅羔实癌逸郝哮彦羡君贪礼排叠捅多碍劈匀里悄傍掏圣钉蠢嫌浇悸逗场解秘睫框新酚坷锻郸通秀差游戏手函拓苯连叠示规捣怠叼釜泞份冗损爷阜偿响捡保枣姥吕宿诫踌颈儒琅岁两敌楚施亮思胁缝沁都驻魔睬遇璃亏陡勤洒劳素羹挫装阻垫钙掀夕菱存誓珠凑亲膏衡扰蜒止楞哲辙岁虏杏缅均诊笨松魄忍靡掀苹潮黄校良忱城无芬竭漫螺屈笛拔侗爪扔戮聋钓挎沽桨竖蝴番兆惺墙航苞傣剑隙阁趁旁清慷牲咬复最矗獭坍田允攘熬旧团语瞧专泵始柳亡胀蚤某儿抒砂处箍壬筋疆诲陛致氯奎算酪山东建筑大学计算机
4、科学与技术学院课程设计说明书题 目: 双向链表的创建和操作的实现 树的创建及相关操作的实现课 程: 数据结构与算法院 (部): 计算机学院专 业: 网络工程班 级: 网络101学生姓名: 王天未学 号: 2010111200指导教师: 伊静完成日期: 2013-7-6 目 录课程设计任务书1III课程设计任务书2IV双向循环链表的创建及相关操作的实现6一、问题描述6二、数据结构6三、逻辑设计7四、编码8五、 测试数据13六、测试情况13树的创建及相关操作的实现17一、问题描述17二、数据结构17三、逻辑设计18四、编码21五、 测试数据28六、测试情况28结 论30参考文献31课程设计指导教师
5、评语32山东建筑大学计算机科学与技术学院课程设计任务书1设计题目双向循环链表的创建及相关操作的实现已知技术参数和设计要求1、建立一个空表2、插入第i个结点。3、删除第i个结点。4、插入第1个结点。5、插入最后一个结点。6、逆置设计内容与步骤1、 设计存储结构2、 设计算法3、 编写程序,进行调试4、 总结并进行演示、讲解设计工作计划与进度安排做双向链表创建方法做双向链表各种操作方法设计考核要求1、 考勤20%2、 课程设计说明书50%3、 成果展示30%指导教师(签字): 教研室主任(签字)山东建筑大学计算机科学与技术学院课程设计任务书2设计题目树的创建及相关操作的实现已知技术参数和设计要求1
6、、利用先序遍历和层次遍历的结果建立二叉树2、实现二叉树的层次遍历3、统计二叉树叶子结点的个数(递归)。4、将二叉树左右子树相互交换(递归)设计内容与步骤1.建立结点类2.构造BinaryTree()3.建立线序遍历树4.建立层次遍历树5.实现树的层次遍历6.统计叶子结点个数7.交换左右子树8.输出树的方法设计工作计划与进度安排6月13日,实验课下完成先序遍历建树,16月14日课程设计时间完成层次遍历建树6月16日课下完成层次遍历和叶子节点个数统计6月18日课程设计时间完成二叉树左右子树相互交换6月19日完成测试函数及纠错设计考核要求1、 考勤20%2、 课程设计说明书50%3、成果展示30%指
7、导教师(签字): 教研室主任(签字)双向循环链表的创建及相关操作的实现一、问题描述 a0 a1 a2 a3 a41、每个节点的next域构成了一个循环单链表2、每个节点的prev域构成了另一个循环单链表二、数据结构针对所处理的树:1、画出双向循环链表的存储结构 prev data next2、使用所选用语言的功能,描述该存储结构的实现private static class Node AnyType data;Node prev;Node next;三、逻辑设计1、总体思路对于双向循环链表,建立一个空表,然后实现双向循环链表的插入,删除操作。为了便于逆置的操作,选择建立一个带头节点的双向循环链
8、表,插入第一个节点和插入最后一个节点,只需要在0号位置和size()位置插入节点就行。2、模块划分(以图示的方法给出各个函数的调用关系)建立一个空表删除节点插入节点逆置主函数3、函数或类的具体定义和功能 class Node/节点类定义public class DlList /循环链表主类public boolean add(int idex, AnyType x)/链表插入操作public AnyType remove(int idex )/链表删除操作private void inverse()/链表逆置 四、编码import java.util.Scanner;class Node pu
9、blic AnyType data; public Node prev; public Node next; public Node() data=null; prev=null; next=null; public Node(AnyType d) data=d; prev=null; next=null; public Node(AnyType d,Node p,Node n) data=d; prev=p; next=n; /节点类public class DlList private Node headNode=new Node(); /头标记或头节点private int theSiz
10、e;/长度 public DlList() headNode.next=headNode; headNode.prev=headNode; theSize=0; /创建一个空表 public int size()return theSize; /设定表的长度 public boolean add(AnyType x) add(theSize, x);return true;/链表输入操作public boolean add(int idex, AnyType x) boolean flag;if (idex theSize) /判断插入的位置是否大于0System.out.println(您输
11、入的要插入元素的位置不正确!);flag = false; elseflag = true;if (flag) Node p;p = getNode(idex);addBefore(p, x);/插入操作return flag;private void addBefore(Node p, AnyType x) Node newNode = new Node(x, p.prev, p);newNode.prev.next = newNode;p.prev = newNode;theSize+;/插入方法 public AnyType remove(int idex ) return remove
12、(getNode(idex); private AnyType remove( Node p ) p.prev.next=p.next; p.next.prev=p.prev; theSize-; return p.data; /删除操作 private void inverse() Node p,q,l; p=headNode.next; q=p.next; while(p!=headNode)l=q.next;/空置的中转结点赋值q.next=p;/将p、q链表的前后域置换。q由p的后域变成前域p.prev=q;p=q;/置换后,将各个结点置换输出。q=l; q.next=p; p.prev=q;/当p为头结点时,直接将前后域置换。 /逆置 private Node getNode(int idex)