《数据结构》上机实验报告 链表_数据结构链表实验报告
《数据结构》上机实验报告 链表由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构链表实验报告”。
西华大学数计学院学生上机实践报告
西华数学与计算机学院上机实践报告
课程名称:数据结构 指导教师:唐剑梅 上机实践名称:
上机实践编号:1 年级: 2011 姓名:蒋俊 学
号
:
***
上机实践成绩:
上机实践日期:2012-11-6
上机实践时间:8:00-9:30
一、实验目的 1.了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。
2.重点是线性表的基本操作在两种存储结构上的实现;其中以链表的操作为侧重点;并进一步学习程序设计方法。
3.掌握栈这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。
4.掌握队列这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。
5.了解和掌握递归程序设计的基本原理和方法。
6.掌握使用 C++面向对象的程序设计技术设计数据结构源程序的方法。
二、实验内容
1.熟悉前面的【程序示例2】,按照约瑟夫问题的方法2,试着不设头结点改写原来的程序,上机调试运行。
2.用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码。
要求:(1)通讯录按姓名项的字母顺序排列;
(2)能查找通讯录中某人的信息;
[提示] 用链表来存放这个通讯录,一个人的信息作为一个结点。成链的过程可以这样考虑:先把头结点后面的西华大学数计学院学生上机实践报告
char name[20];
// 姓名子域
NodeType *next;
// 指针域
};cla Jose
//类声明
{ private: NodeType *Head;
public:
Jose(){};
~Jose(){ };
void creat();
void outs();
};void Jose::creat(){ int i=0, n;
NodeType *newp, *pre;
cout
输入总人数 n=“;cin>>n;
pre=new NodeType;
Head=new NodeType;
pre->num=1;
cout
姓名=”;
cin>>pre->name;
cout
密码=“;
cin>>pre->psw;
Head=pre;
Head->next=Head;
for(i=1;i
{ newp=new NodeType;
newp->num=i+1;
cout
姓名=”;cin>>newp->name;
cout
密码=“;
cin>>newp->psw;
newp->next=Head;
pre->next=newp;
pre=newp;
} }
void Jose::outs()
{ int m,i;
NodeType *q=Head, *p;
cout=2)”;cin>>m;
cout
根据m值,开始报数输出:“
while(q->next!=q)
西华大学数计学院学生上机实践报告
{ for(i=1;inext;}
coutnumname
coutnumpsw
m=q->psw;
p->next=q->next;delete q;
q=p->next;
}
coutnumname
coutnumpsw
delete q;}
int main()
{
Jose h;
h.creat();
h.outs();
return 0;}
西华大学数计学院学生上机实践报告
{ char Add[20];
char name[20];
char tel[20];
};struct NodeType {
ElemType data;
NodeType *next;};cla Sqlist
{ private:
NodeType *Head;
public:
Sqlist();
~Sqlist();
void creat();
void Insert(ElemType x);
void Delet(ElemType x);
void PrintOut();
};Sqlist::Sqlist(){
Head=new NodeType;Head->next=NULL;strcpy(Head->data.name,”姓名“);strcpy(Head->data.Add,”地址“);strcpy(Head->data.tel,”电话号码“);} Sqlist::~Sqlist(){
NodeType *p=Head->next;
while(p!=NULL)
{Head->next=p->next;
delete p;
p=Head->next;} } void Sqlist::creat()
//初步建立一个通讯录
{ NodeType*p,*s,*q;ElemType x;
西华大学数计学院学生上机实践报告
int a;q=Head;cout>x.name;cout>x.Add;cout>x.tel;p=new NodeType;p->data=x;Head->next=p;p->next=NULL;cout>a;
while(a!=-1){ cout>x.name;cout>x.Add;cout>x.tel;s=new NodeType;s->data=x;if(strcmp(s->data.name,p->data.name)>0){ p->next=s;s->next=NULL;
p=s;} else{ s->next=p;q->next=s;} q=q->next;
cout>a;} } void Sqlist::Insert(ElemType x)//插入 { NodeType *p,*q,*s;s=new NodeType;
西华大学数计学院学生上机实践报告
s->data=x;q=Head;p=q->next;while(p!=NULL&&strcmp(p->data.name,x.name)next;} s->next=p;q->next=s;} void Sqlist::Delet(ElemType x)//删除 { NodeType *p,*q;q=Head;p=Head->next;while(p!=NULL&&strcmp(p->data.name,x.name)!=0){q=p;p=p->next;} if(p!=NULL){ q->next=p->next;delete p;cout
{ NodeType *p;p=Head->next;while(p!=NULL){ coutdata.namedata.teldata.Addnext;} cout
Sqlist as;
cout
通讯录演示”;
do{
cout
cout
1.初步建立一个通讯录(单链表)
“;
西华大学数计学院学生上机实践报告
cout
2.插入新的电话记录 ”;
cout
3.删除一个电话记录“;
cout
4.结束程序”;
cout
cout
请输入你的选择(1,2,3,4)“;cin>>k;switch(k){ case 1:{ as.creat();as.PrintOut();}break;
case 2:{
cout>e.name;
cout>e.tel;
cout>e.Add;
as.Insert(e);as.PrintOut();
}break;
case 3:{
cout
cin>>e.name;
as.Delet(e);
as.PrintOut();
}break;
default:break;
}
}while(k>=1&&k
cout
再见!”;
return 0;}
西华大学数计学院学生上机实践报告
西华大学数计学院学生上机实践报告
西华大学数计学院学生上机实践报告
const int MAXSIZE=100;
// 数组的容量 cla SqStack
{ private:
ElemType elem[MAXSIZE];
int top;
public:
SqStack();
~SqStack(){};
void SqStack::push(ElemType e);
ElemType SqStack::pop();
void SqStack::PrintOut();
int SqStack::IsEmpty();
void f(ElemType N,ElemType M);};void SqStack::f(ElemType N,ElemType M){ SqStack s;
ElemType e;while(N){
s.push(N%M);
N=N/M;} while(!s.IsEmpty()){
e=s.pop();
if(e>=10)
{
e=e%10;
switch(e)
{
case 1:cout
case 2:cout
case 3:cout
case 4:cout
case 5:cout
default:cout
}
} else
cout
西华大学数计学院学生上机实践报告
} cout
{cout
return;
}
else{top++;
elem[top]=e;} } ElemType SqStack::pop(){ElemType x;
if(top==0)
{ cout
else { x=elem[top];
top--;
return x;} } void SqStack::PrintOut()
{int k;
cout
for(k=top;k>=1;k--)cout
cout
else return 0;} void main(){ ElemType a,m;cout>a;cout>m;SqStack as;as.f(a,m);}
西华大学数计学院学生上机实践报告
五、总结
通过本次实验,我熟悉了链表的操作,了解了线性表在现实生活中的运用,认识了顺序存储和链式存储这两种结构。本次上机实践基本完成了实验内容,但完成的不是很好,以后需要更加努力地掌握基本的知识。实验内容对于队列的运用没有涉及,希望以后有所涉及。
西华大学数计学院学生上机实践报告