数据结构实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构实验报告答案”。
数 据 结 构 实 验 报 告
1.问题描述
为某个单位建立一个员工通讯录管理系统,可以方便地查询每一个员工的办公室电话号码、手机号码及电子邮箱。2.设计分析
在本设计中,整个通讯录可以采用顺序表或链表方式存储。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除以及整个通讯录表的输出。3.员工通讯信息的结构类型定义和通讯录链表的结点类型
typedef struct { char num[5];/*员工编号*/ char name[8];/*员工姓名*/ char phone[9];/*办公室电话号码*/ char call[12];/*手机号码*/ }DataType;/*员工通讯信息的结构类型*/ typedef struct node { DataType data;/*结点的数据域*/ struct node *next;/*结点的指针域*/ }ListNode,*LinkList;/*通讯录链表的结构类型*/ 4.实验源代码
// Addre_List1.cpp : 定义控制台应用程序的入口点。// //#include “stdafx.h” #include“stdio.h” #include “stdlib.h” # include #include #include using namespace std;#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 typedef intStatus;typedef struct { /*员工通讯信息的结构类型定义*/
char num[5];
/*员工编号*/
char name[8];
/*员工姓名*/ char phone[9];
/*办公室电话号码*/
char call[12];
/*手机号码*/
char mail[15];
/*邮箱*/ }DataType;/*通讯录单链表的结点类型*/ typedef struct node {
DataType data;
/*结点的数据域*/
struct node *next;
/*结点的指针域*/ }LNode, *LinkList;void CreateList(LinkList &L){//逆位序输入n个元素的值,建立带表头结点的单链线性表L
LinkList p;
int i,n;
L =(LinkList)malloc(sizeof(LNode));
L->next = NULL;
cout
cin >> n;
for(i = 0;i
p =(LinkList)malloc(sizeof(LNode));
cout
请输入员工信息“
cout
员工编号:”;
cin>> p->data.num;
cout
员工姓名:“;
cin >> p->data.name;
cout
cin >> p->data.phone;
cout
手机号码:”;
cin >> p->data.phone;
cout
员工邮箱:“;
cin >> p->data.mail;
cout
p->next = L->next;
L->next = p;
} } void InitList(LinkList &L){//初始化线性表
L =(LinkList)malloc(sizeof(LNode));
L->next = NULL;} void DestroyList(LinkList &L){//销毁线性表
LinkList p, q;
p = L;
q = p->next;
while(q!= NULL)
{ free(p);
} } int ListEmpty(LinkList &L){//判断线性表是否为空
if(L->next == NULL)
return TRUE;
else
return FALSE;} int ListLength(LinkList &L){//求链表的长度
LinkList p = L;
int c = 0;
while(p->next!= NULL){
c++;
p = p->next;
}
return(c);} void GetElem(LinkList &L){//取链表第i个数据元素
LinkList p = L->next;
string s;
cout
cin >> s;
while(p!= NULL)//根据相关信息,查找员工。
{
if(p->data.num == s || p->data.name == s || p->data.phone == s || p->data.call == s || p->data.mail == s)
break;
p = p->next;
}
if(!p)
cout
else{
cout
员工信息”
cout
员工编号:“data.num
cout
员工姓名:”data.name
cout data.phone
cout
手机号码:“data.phone
cout
员工邮箱:”data.mail
cout
} } void ReviseList(LinkList &L)//修改信息 {
LinkList p = L->next;
char j[20];
string s;
int i;
cout
cin >> s;
while(p!= NULL){//根据相关信息,查找员工。
if(p->data.num == s || p->data.name == s || p->data.phone == s || p->data.call == s || p->data.mail == s)
break;
p = p->next;
}
if(!p)
cout
else
{
cout
cin >> i;
cout
cin >> j;
switch(i){
case 1:strcpy(p->data.num, j);break;
case 2:strcpy(p->data.name, j);break;
case 3:strcpy(p->data.phone, j);break;
case 4:strcpy(p->data.call, j);break;
case 5:strcpy(p->data.mail, j);break;
default: cout
system(“pause”);
}
cout
system(“pause”);
return;
} } void ListDelete(LinkList &L)//删除第i个元素 {
LinkList p, q;
int j = 0,i;p = L;
cout
cin >> i;
while(p->next && j
cout
q = p->next;
p->next = q->next;//删除并释放结点
free(q);} void ListInsert(LinkList &L){
LinkList s, p = L;
s =(LinkList)malloc(sizeof(LNode));
cout
请输入员工信息“
cout
员工编号:”;
cin >> s->data.num;
cout
员工姓名:“;
cin >> s->data.name;
cout
cin >> s->data.phone;
cout
手机号码:”;
cin >> s->data.phone;
cout
员工邮箱:“;
cin >> s->data.mail;
cout
s->next = p->next;
p->next = s;}
void PrintList(LinkList &L)//打印线性表 {
LinkList p = L->next;
int i = 1;
if(p == NULL)
cout
while(p!= NULL)
{
cout
cout
员工编号:”data.num
cout
员工姓名:“data.name
cout data.phone
cout
手机号码:”data.phone
cout
员工邮箱:“data.mail
cout
p = L;
cout
cin >> i;
while(p->next && j
cout
q = p->next;
p->next = q->next;//删除并释放结点
free(q);} void ListInsert(LinkList &L){
LinkList s, p = L;
s =(LinkList)malloc(sizeof(LNode));
cout
请输入员工信息”
cout
员工编号:“;
cin >> s->data.num;
cout
员工姓名:”;
cin >> s->data.name;
cout
cin >> s->data.phone;
cout
手机号码:“;
cin >> s->data.phone;
cout
员工邮箱:”;
cin >> s->data.mail;
cout
s->next = p->next;
p->next = s;}
void PrintList(LinkList &L)//打印线性表 {
LinkList p = L->next;
int i = 1;
if(p == NULL)
cout
while(p!= NULL)
{
cout
cout
员工编号:“data.num
cout
员工姓名:”data.name
cout data.phone
cout
手机号码:“data.phone
cout
员工邮箱:”data.mail
cout
case 4:
//添加
ListInsert(L);
cout
system(“pause”);
break;
case 5:
PrintList(L);
ListDelete(L);
cout
system(“pause”);
break;//输出全部信息
case 6:
PrintList(L);
system(“pause”);
break;
case 7:
cout
system(“pause”);
break;
default:
cout
system(“pause”);
}
} while(in!= 0);} 5.实验截图.
刀豆文库小编为你整合推荐8篇数据结构实验报告,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......
注意:实验结束后提交一份实验报告电子文档电子文档命名为“学号+姓名”,如:E01214058宋思怡《数据结构》实验报告(一)学号:姓名:专业年级:实验名称:线性表实验日期:2014年4月14日实验......
数据结构实验报告想必学计算机专业的同学都知道数据结构是一门比较重要的课程,那么,下面是本站小编给大家整理收集的数据结构实验报告,供大家阅读参考。数据结构实验报告1一、......
数据结构实验报告(精选16篇)由网友“coco2008”投稿提供,下面是小编为大家推荐的数据结构实验报告,欢迎大家分享。篇1:数据结构实验报告 一、实验目的及要求1)掌握栈和队列这两种......
实验报告4 排序一、实验目的1、掌握常用的排序方法,并掌握用高级语言实现排序算法的方法。2、深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用。3、了解各种方法的......