数据结构课程设计报告Word文件下载.docx

上传人:b****4 文档编号:7824361 上传时间:2023-05-09 格式:DOCX 页数:59 大小:616.66KB
下载 相关 举报
数据结构课程设计报告Word文件下载.docx_第1页
第1页 / 共59页
数据结构课程设计报告Word文件下载.docx_第2页
第2页 / 共59页
数据结构课程设计报告Word文件下载.docx_第3页
第3页 / 共59页
数据结构课程设计报告Word文件下载.docx_第4页
第4页 / 共59页
数据结构课程设计报告Word文件下载.docx_第5页
第5页 / 共59页
数据结构课程设计报告Word文件下载.docx_第6页
第6页 / 共59页
数据结构课程设计报告Word文件下载.docx_第7页
第7页 / 共59页
数据结构课程设计报告Word文件下载.docx_第8页
第8页 / 共59页
数据结构课程设计报告Word文件下载.docx_第9页
第9页 / 共59页
数据结构课程设计报告Word文件下载.docx_第10页
第10页 / 共59页
数据结构课程设计报告Word文件下载.docx_第11页
第11页 / 共59页
数据结构课程设计报告Word文件下载.docx_第12页
第12页 / 共59页
数据结构课程设计报告Word文件下载.docx_第13页
第13页 / 共59页
数据结构课程设计报告Word文件下载.docx_第14页
第14页 / 共59页
数据结构课程设计报告Word文件下载.docx_第15页
第15页 / 共59页
数据结构课程设计报告Word文件下载.docx_第16页
第16页 / 共59页
数据结构课程设计报告Word文件下载.docx_第17页
第17页 / 共59页
数据结构课程设计报告Word文件下载.docx_第18页
第18页 / 共59页
数据结构课程设计报告Word文件下载.docx_第19页
第19页 / 共59页
数据结构课程设计报告Word文件下载.docx_第20页
第20页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计报告Word文件下载.docx

《数据结构课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告Word文件下载.docx(59页珍藏版)》请在冰点文库上搜索。

数据结构课程设计报告Word文件下载.docx

queue.h"

stack.h"

intmain(intargc,char*argv[])

{

cout<

<

"

请输入停车场的容量:

;

intn,num,time;

cin>

>

n;

chara;

请输入停车场车辆的情况:

endl;

a>

num>

time;

SeqStack<

char,int,int>

s1;

s2;

LinkedQueue<

q;

s1.Push(a,num,time);

车牌为"

num<

在停车场的位置为:

s1.getSize()<

while(a!

='

E'

{

cin>

inttime1=time;

if(a=='

A'

{

if(s1.Find(num)==true)

{

cout<

车牌为"

车停在"

s1.getnum(num)+1<

位置"

请重新输入!

continue;

}

else

if(s1.getSize()<

n)

{

s1.Push(a,num,time);

cout<

}

else

q.EnQueue(a,num,time);

在便道上的位置为:

q.getSize()<

}

D'

if(s1.Find(num)==true)//先找到此车

intb=s1.gettime(num);

在停车场停留的时间是:

time-b<

for(inti=s1.getnum(num)+1;

i<

s1.getSize();

i++)

s1.Pop(a,num,time);

//将车辆放在零时栈

s2.Push(a,num,time);

s1.Pop(a,num,time);

//退出此车

for(i=0;

s2.getSize();

i++)//将零时栈的车辆放在停车场

s2.Pop(a,num,time);

if(q.getSize()>

0)//如果便道中有车,则将便道的车进入停车场

q.DeQueue(a,num,time);

s1.Push(a,num,time1);

}

车在便道上,不在停车场!

}

return0;

}

【运行结果】

实习题目二个人电话号码查询系统

人们在日常生活中经常需要查找某个人或某个单位的电话号码,本实验将实现一个简单

的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询。

基本要求:

(1)在外存上,用文件保存电话号码信息;

(2)在内存中,设计数据结构存储电话号码信息;

(3)提供查询功能:

根据姓名实现快速查询;

(4)提供其他维护功能:

例如插入、删除、修改等。

由于需要管理的电话号码信息较多,而且要在程序运行结束后仍然保存电话号码信息,

所以电话号码信息采用文件的形式存放到外存中。

在系统运行时,需要将电话号码信息从文

件调入内存来进行查找等操作,为了接收文件中的内容,要有一个数据结构与之对应,可以

设计如下结构类型的数组来接收数据:

constintmax=10;

structTeleNumber

stringname;

//姓名

stringphoneNumber;

//固定电话号码

stringmobileNumber;

//移动电话号码

stringemail;

//电子邮箱

}Tele[max];

为了实现对电话号码的快速查询,可以将上述结构数组排序,以便应用折半查找,但是,

在数组中实现插入和删除操作的代价较高。

如果记录需频繁进行插入或删除操作,可以考虑

采用二叉搜索树组织电话号码信息,则查找和维护都能获得较高的时间性能。

更复杂地,需

要考虑该二叉搜索树是否平衡,如何使之达到平衡。

//结构体的实现

#include<

iostream>

stdlib.h"

string>

usingnamespacestd;

structTeleNumber;

istream&

operator>

(istream&

is,TeleNumber&

c);

//使编译器识别重载的运算符

ostream&

operator<

(ostream&

os,TeleNumber&

stringname;

stringphoneNumber;

stringmobileNumber;

stringemail;

friendistream&

//重载>

friendostream&

//重载<

}Tele[10];

c)

is>

c.name>

c.phoneNumber>

c.mobileNumber>

c.email;

//输入结构体

returnis;

c)//输出结构体

os<

c.name<

setw(10)<

setw(15)<

c.phoneNumber<

setw(20)<

c.mobileNumber<

returnos;

//二叉搜索树的实现

structBSTNode//TeleNumber(E)

TeleNumberdata;

BSTNode*left,*right;

BSTNode():

left(NULL),right(NULL){}

BSTNode(constTeleNumberd,BSTNode*L=NULL,BSTNode*R=NULL)

:

data(d),left(L),right(R){}

~BSTNode(){}

voidsetData(TeleNumberd){data=d;

TeleNumbergetData(){returndata;

};

classBST

public:

BST():

root(NULL){}

~BST(){}

boolInsert(constTeleNumber&

e1)

returnInsert(e1,root);

boolRemove(conststringx)

returnRemove(x,root);

boolModify(conststringx,BSTNode*&

ptr);

BSTNode*getroot(){returnroot;

BSTNode*Search(conststringx,BSTNode*ptr);

private:

BSTNode*root;

e1,BSTNode*&

boolRemove(conststringx,BSTNode*&

//插入到二叉搜索树

boolBST:

:

Insert(constTeleNumber&

ptr)

inti=0;

if(ptr==NULL)

ptr=newBSTNode(e1);

if(ptr==NULL)

cerr<

Outofspace"

exit

(1);

returntrue;

elseif(int(e1.name.substr(i,i+1)[0])<

int(ptr->

data.name.substr(i,i+1)[0]))

Insert(e1,ptr->

left);

elseif(int(e1.name.substr(i,i+1)[0])>

right);

else

returnfalse;

//删除二叉搜索树中的某结点

Remove(conststringx,BSTNode*&

BSTNode*temp;

if(ptr!

=NULL)

if(int(x.substr(0,1)[0])<

data.name.substr(0,1)[0]))

Remove(x,ptr->

elseif(int(x.substr(0,1)[0])>

elseif(ptr->

left!

=NULL&

&

ptr->

right!

temp=ptr->

right;

while(temp->

temp=temp->

left;

ptr->

data=temp->

data;

Remove(ptr->

data.name,ptr->

else

temp=ptr;

if(ptr->

left==NULL)

ptr=ptr->

elseptr=ptr->

deletetemp;

returnfalse;

//在二叉搜索树的某个值

BSTNode*BST:

Search(conststringx,BSTNode*ptr)

returnNULL;

elseif(int(x.substr(0,1)[0])<

returnSearch(x,ptr->

elseif(int(x.substr(0,1)[0])>

returnptr;

Modify(conststringx,BSTNode*&

ptr=Search(x,root);

returntrue;

fstream>

stdlib.h>

iomanip>

tele.h"

BST.H"

inta;

stringstr;

BSTbst;

BSTNode*b;

************************欢迎使用个人电话号码查询系统**********************"

************************||1.查找联系人||**********************"

************************||2.添加联系人||**********************"

************************||3.删除联系人||**********************"

************************||4.修改联系人||**********************"

************************||5.退出本系统||**********************"

ifstreamfin("

C.txt"

);

while(!

fin.eof())

fin>

Tele[i];

bst.Insert(Tele[i]);

i++;

fin.close();

=5)

cout<

请输入您的选择:

cin>

a;

switch(a)

case1:

请输入你要查找的名字:

cin>

str;

if(bst.Search(str,bst.getroot())==NULL)

没有此联系人!

bst.Search(str,bst.getroot())->

data<

}break;

case2:

请输入要添加的联系人:

bst.Insert(Tele[i]);

}break;

case3:

请输入要删除的联系人:

bst.Remove(str);

case4:

请输入要修改的联系人:

bst.Modify(str,b);

case5:

谢谢使用个人电话号码查询系统!

实习题目三排序应用

假定文本文件A1.txt中是我校所有参加南望山庄二期挑房职工的信息,请编写程序,读

出文件中的内容,再按挑房的先后次序排队后将排序号和姓名以文本方式存放到文件A2.txt

中。

排队原则:

先按职称排,同职称按分房工龄排,同工龄按年龄排。

职称编号:

校级干部0

教授、正处级1

副教授、副处级2

讲师、科级3

其他4

先将文本文档的内容读到数组中,重载输入输出号,使得文本文档中的每一行为一个元素,然后按照要用冒泡排序法。

排序后,并将有序的结果输入到文本文档中

structstaff;

is,staff&

os,staff&

constintmax=1000;

structstaff//结构体包括职工信息

stringtitleID;

//职称编号

stringworkingage;

//工龄

stringage;

//年龄

>

}sta[max];

c.titleID>

c.workingage>

c.age;

setiosflags(ios_base:

left)<

setw(12)<

c.titleID<

c.workingage<

c.age<

//冒泡排序法进行排序

voidBubbleSort(staffv[],intn)

for(inti=2;

{

for(intj=n-1;

j>

=i;

j--)

if(atof(v[j-1].titleID.c_str())>

atoi(v[j].titleID.c_str()))

stafftemp=v[j-1];

v[j-1]=v[j];

v[j]=temp;

if(atof(v[j-1].titleID.c_str())==atoi(v[j].titleID.c_str()))

if(atof(v[j-1].workingage.c_str())>

atoi(v[j].workingage.c_str()))

stafftemp=v[j-1];

if(atof(v[j-1].workingage.c_str())==atoi(v[j].workingage.c_str()))

if(atof(v[j-1].age.c_str())>

atoi(v[j].age.c_str()))

{

stafftemp=v[j-1];

}

}

staff.h"

sort.h"

a1.txt"

//将a1.txt的内容读到结构体数组中

sta[i];

BubbleSort(sta,i)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2