双向链表的建立插入删除算法的实现-数据结构课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计
设计说明书
双向链表的建立插入删除算法的实现
学生姓名






指导教师
陈姣 0921024023
信 管 091
魏佳
计算机科学与技术系 2011 年 3 月 4 日
数据结构课程设计评阅书
题 目 双向链表的建立插入删除算法的实现
学生姓名 陈姣
学号 0921024023
指导教师评语及成绩
开发工具:Visual C++6.0
第 1页 共 27页
2 问题分析和任务定义
通过题目要求,本次设计是基于 Visual C++作为开发环境,用数据结构来实现双向链 表的插入、查找、删除等功能,具体应用于个人电话本,电话本中含有存储姓名和电话号 码。
双向链表的节点中有两个指针域,其一指向直接后继,另一个指向直接前驱。和单链 表的循环类似,双向链表也可以有循环表。
3)详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合 考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能 做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基 本操作做出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;
成绩:
教师签名:
答辩教师评语及成绩
年月日
成绩: 教研室意见
教师签名:
年月日
总成绩:
室主任签名:
年月日
注:指导教师成绩 60%,答辩成绩 40%,总成绩合成后按五级制记入。
课程设计任务书
2010—2011 学年第二学期
专业: 信息管理与信息系统 学号: 0921024023
姓名: 陈姣
课程设计名称:
1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要 求做什么?(而不是怎么做?)限制条件是什么?确定问题的输入数据集合。
2)逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构 为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个 抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的 算法,并画出模块之间的调用关系图;
第 3页 共 27页
4 详细设计
定义存储结构: typedef struct lnode { int date; struct lnode *next,*prior; // 表示循环双链表 }lnode;
4.1 头文件设计
头文件是程序设计不可或缺的一部分,但是各种程序的头文件所包含的内容也不近相
同,然而,此次程序设计的头文件内容不仅包含一般程序所具有的头文件还添加了查找文
开始 初始化链表,调用 inlist 函数输入数据
调用 input 函数 调用 deletes 函数 调用 search 函数
输出 进入 while(1)
ห้องสมุดไป่ตู้结束
图 3.1 函数调用流程图
抽象数据类型定义如下:ADT lnode { 数据对象:{D = {a | a Elem Set , i =1,2,3……,n ,n 0} 数据关系:R1= {< a , a> | a ,a D, i=2,…..,n} 基本操作:Void inlist (lnode *p) 操作结果:构造一个链表。Void inputs (inode *q) 初始条件:链表 lnode 已存在。 操作结果:向链表中输入数据。Void search (lnode *q) 初始条件:链表 lnode 已存在。 操作结果:查找链表中的数据。Void deletes (lnode *q) 初始条件:链表 lnode 已存在。 操作结果:删除链表中的数据。} ADT lnode
4.2.1 显示菜单设计..............................................................................................4 4.2.2 链表的建立..................................................................................................6 4.2.3 链表的初始化设计......................................................................................7 4.2.4 链表的的插入设计......................................................................................8 4.2.5 链表的删除设计........................................................................................10 4.2.6 链表的的查找设计....................................................................................12 5 程序编码..................................................................................................................14 6 程序调试与测试......................................................................................................18 7 结果分析..................................................................................................................20 8 总结..........................................................................................................................21 参考文献......................................................................................................................22
4.1 头文件设计......................................................................................................... 4 4.2 子函数设计......................................................................................................... 4
4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解 和断言,使程序中逻辑概念清楚;
5)程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握 调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正 确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;
件的长度、文件数据的类型、关键字项等等。
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include<string.h>
//#define exit 0
typedef struct lnode
{
char date[15];
char name[20];
1 课题描述
数据结构课程设计是计算机专业集中实现性环节之一,是学习完数据结构课程后进行 的一次全面的综合练习。
编写一个数据结构程序,实现双向链表的建立、插入、删除等算法。具体建立的是一 个个人电话本,通过双向链表实现查找、插入、删除的功能。以把所学数据结构知识应用 到实际生活中去。
建立双向链表必须运用结构体建立两个指针,先定义一个双链节点,但是,它的名字 必须叫 Node,当派生双向链表时,写 template < class Type > class Db List : public List < new type < Type > > 时,连续的两个“>”之间要有空格。
指导教师(签字): 批准日期: 2011 年 2 月 21 日
教研室主任(签字):
摘要
本课程设计采用 Visual C++作为软件开发环境,其具体的实现过程依次是:建立空指 针、构成双向链表、增加节点并给每个节点赋值,最后再通过所建链表进行插入、删除、 查找等程序,从而实现了链表问题求解,可以用一般的指针来实现,但是数据库中着重强 调了结构体,本程序用结构体指针更容易理解和实现初始化。
关键词:数据结构;双向链表;操作
目录
1 课题描述....................................................................................................................1 2 问题分析和任务定义................................................................................................2 3 逻辑设计....................................................................................................................3 4 详细设计....................................................................................................................4
在双向链表中,若 d 为指向表中某一节点的指针(即 d 为 Du Link List 型变量),显 然有 d->next->prior=d->prior->next=d 这个表达式恰当的反应了这种结构的特性。
第 2页 共 27页
3 逻辑设计
此程序分为三大模块:数据输入模块、数据删除模块、数据查找模块。 数据输入模块完成数据的输入和存储,数据删除模块主要完成个人对没用的数据进行 删除,数据查找模块方便个人查找存储在里边的数据。 函数调用流程如图 3.1 所示:
通过本项课程设计,进一步熟悉数据结构及 c++的基本知识,培养独立思考、综合应 用所学有关相应知识的能力,掌握数据结构课程设计的基本方法,强化上机动手能力,达 到理论与实际相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实 世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。
6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出 结果。算法的时间、空间复杂性分析;
7)编写课程设计报告; 以上要求中前三个阶段的任务完成后,先将设计说明书的草稿交指导老师面审,审查 合格后方可进入后续阶段的工作。设计工作结束后,经指导老师验收合格后将设计说明书 打印装订,并进行答辩。
struct lnode *next,*prior;
// 表示 循环双链表
}lnode;
4.2 子函数设计
4.2.1 显示菜单设计
数据结构课程设计
设 计 题 目:
双向链表的建立插入删除算法的实现
完 成 期 限:自 2011 年 2 月 21 日至 2011 年 3 月 4 日共 2 周 设计内容:
用 C/C++编写一个程序实现双向链表的建立、插入、删除算法。要求建立的链表要有 一定的应用价值,具体应用内容设计者自己确定。 设计要求:
相关文档
最新文档