《数据结构》上机实验报告 链表_数据结构链表实验报告

2020-02-27 其他范文 下载本文

《数据结构》上机实验报告 链表由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构链表实验报告”。

西华大学数计学院学生上机实践报告

西华数学与计算机学院上机实践报告

课程名称:数据结构 指导教师:唐剑梅 上机实践名称:

上机实践编号: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);}

西华大学数计学院学生上机实践报告

五、总结

通过本次实验,我熟悉了链表的操作,了解了线性表在现实生活中的运用,认识了顺序存储和链式存储这两种结构。本次上机实践基本完成了实验内容,但完成的不是很好,以后需要更加努力地掌握基本的知识。实验内容对于队列的运用没有涉及,希望以后有所涉及。

西华大学数计学院学生上机实践报告

《《数据结构》上机实验报告 链表.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
《数据结构》上机实验报告 链表
点击下载文档
相关专题 数据结构链表实验报告 实验报告 数据结构 链表 数据结构链表实验报告 实验报告 数据结构 链表
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文