数据结构课程设计之链表讲解

发布 2021-05-31 04:52:28 阅读 8997

《数据结构》课程设计报告。

之线性表及应用。

信息工程学院。

计算机科学与技术。

姓名:xx班级:xx

学号:xx程序设计书目录。

一. 课程题目。

二. 设计目标。

三. 问题描述。

四. 需求分析。

五. 概要设计。

六. 详细设计(给出算法的伪码描述和流程图)

七. 测试分析。

八. 使用说明。

九. 测试数据。

一十. 课程设计总结。

一.课程题目:线性表及应用(班级通讯录管理系统)。

二.设计目标。

通过对通讯录管理链表的课程设计,加深对程序设计的理解,熟练掌握和加深c语言的基本知识和语法规范,同时更进一步地理解数据结构对单链表知识的应用,也提高了我们进行程序设计的基本能力。这次课程设计提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实际运用的能力。

三.问题描述。

为某个班级建立一个学生通讯录管理系统,可以方便查询每一个学生的宿舍**、手机号、及电子邮箱。其功能包括通讯录链表的建立、学生通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。

四.需求分析。

建立一个班级通讯录的管理系统,从而方便查询其每个学生的一些通讯信息。

首先,应运用c语言中结构体的知识。把学生的各项信息储存到结构体的链表中,定义一个新的结构体类型struct(struct是声明结构体时所必须使用的关键字)它向编译系统声明这是一个“结构体类型”,它包括num, name ,phone等不同类型的数据项。

其次:运用数据结构中线性表的知识。线性表的存储结构分为线性表的线性存储结构和线性表的链式存储结构, 线性表的顺序存储结构是指用一组地址连续的存储单元一次存储线性表的数据元素。

线性表的链式存储结构则是通过指针反映元素之间的关系,不要求逻辑上相邻的元素在物理位置上也相邻,所以该方法可以克服顺序表的一些缺点。所以本题应运用线性链表的链式存储结构。线性链表的链式存储结构又分为单链表、循环链表和双链表,本题运用单链表的知识。

1.通讯录链表的建立。

建立单链表有两种方法,头插入法和尾插入法。头插入法是将每次新插入的结点插入在链表的表头,而尾插入法是将新插入的结点插入到链表的表尾。在这个通讯录的建立中将采用尾插入法建立链表。

2.链表的插入。

链表结点的插入是要求将一个通讯录数据结点按其编号的顺序插入有序通讯录表的相应位置,以保持其有序性。使用两个指针变量分别指向刚访问的结点和下一个结点,寻找插入结点的位置,其中一个指向待插入位置的前一个结点。

3.链表的查询。

首先输入要查找的通讯录的学号、姓名、宿舍**号或手机号码,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,否则返回一个空的指针。

4.单链表的删除。

输入要查找的通讯录的学号或者姓名,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,删除结点即可。

5.学生通讯信息的修改。

首先通过链表的查询找到要修改的结点,找到后就可以对的学号、姓名、宿舍**号码、手机号码、电子邮箱任意一项进行改。

6.通讯录的输出。

将表头指针赋给一个指针变量,然后用其向后扫描,直至表尾,指针为空为止。

五.概要设计。

1.本程序主要运用了结构体、线性表(单链表)、及函数调用的相关知识。

a.定义学生通讯录结点类型:

typedef struct //通讯录结点类型。

char num[10学号 */

char name[15姓名*/

char phone[15宿舍***/

char call[15手机号*/

char e_mail[20]; 电子邮箱*/

datatype;

b. 线性表的链式存储结构定义:

typedef struct node

rear->next=null; /终端结点指针域置空。

return head;

2)通讯结点的的插入。

void insertnode(linklist head,dnode *p) /插入*/

dnode *p1;

dnode *p2;

p1=head;

p2=p1->next;

while(p2!=null&&strcmp(p2->>0)

p1->next=p; /插入p所指向的结点。

p->next=p2; /连接表中剩余部分。

3)通讯结点信息的查询。

dnode *listfind(linklist head) /通讯链表上的查找。

dnode *p;

char num[5];

char name[10];

char phone[15];

char call[15];

int x;

printf("1.按学号查询:");

printf("2.按姓名查询:");

printf("3.按**号码查询:");

printf("4.按手机号码查询:");

printf("请选择(1-4)的数字: "

p=head->next; /有头结点。

scanf("%d",&x);

if(x==1)

elseif(x==2)

if(x==3)

if(x==4)

return p;

4)通讯结点的删除。

void deletenode(linklist head) /学生通讯信息的删除*/

char a,b;

dnode *p;

dnode *q;

char num[5];

char name[10];

int x;

数据结构课程设计报告链表操作

数据结构 课。程。设。计。报。告。题目链表操作。专业班级。姓名。学号。设计时间。指导教师。一 设计题目。链表操作 一 设计目的 1 掌握线性链表的建立。2 掌握线性链表的基本操作。二 设计内容和要求 利用链表的插入运算建立线性链表,然后实现链表的查找 删除 计数 输出 排序 逆置等运算,插入 删除 ...

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...