文档库 最新最全的文档下载
当前位置:文档库 › 罗玉萍实验报告三120312147

罗玉萍实验报告三120312147

罗玉萍实验报告三120312147
罗玉萍实验报告三120312147

池州学院数学计算机科学系实验报告

专业:计算机科学与技术班级:12级计本实验课程:类和对象

姓名:罗玉萍学号:120312147 实验室:__博采北101

实验时间:2013/4/26 指导教师签字:彭秀芳成绩:

实验三类和对象

一、实验目的与要求

1. 学习类、成员函数、对象的定义方法。

2. 学习使用构造函数和析构函数。

3. 学习使用静态成员、内联成员函数。

4. 掌握this指针的使用方法。

5. 掌握对象成员的使用方法。

6. 掌握多文件结构的程序设计方法。

7. 进一步熟悉VC++ 6.0的编译连接过程,掌握VC++ 6.0的调试方法。

二、实验环境

PC机、XP操作系统、Visual C++ 6.0

三、实验内容

1. 阅读程序,预测功能,再上机编辑、运行该程序,以验证自己的预测。

(1)理解拷贝构造函数的目的和调用。在三种情况下,系统自动调用拷贝构造函数

第一种情况:当用类的一个对象去初始化该类的另一个对象时;

第二种情况:如果函数的形参是类的对象,调用函数时,进行形参和实参结合时;第三种情况:如果函数的返回值是类的对象,函数执行完成返回调用者时。

以下程序都是定义一个屏幕上的点类,该类具有x,y坐标属性。

【程序1】

#include

using namespace std;

class Point

{

public:

Point(int xx = 0, int yy = 0)

{

X = xx; Y = yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() { return X; }

int GetY() { return Y; }

private:

int X,Y;

};

Point::Point(Point &p)

{

X=p.X;

Y=p.Y;

cout<<"调用拷贝构造函数\n";

}

void main()

{

Point A(3,4); //a行

Point B(A); //b行

cout<

}

思考:

(a)将b行改写为Point B = A; 程序输出结果会有变化吗?

(b)将b行改写为Point B; B = A; 程序输出结果会有变化吗?【程序2】

#include

using namespace std;

class Point

{

public:

Point(int xx = 0,int yy = 0)

{

X = xx; Y = yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() {return X;}

int GetY() {return Y;}

private:

int X,Y;

};

Point::Point(Point &p)

{

X = p.X;

Y = p.Y;

cout<<"调用拷贝构造函数\n";

}

void fun1(Point p)

{

cout<

}

void main()

{

Point A(4,5); //a行

Point B(A); //b行

cout<

fun1(B); //调用拷贝构造函数,实现形参和实参结合}

【程序3】

#include

using namespace std;

class Point

{

public:

Point(int xx=0,int yy=0)

{

X=xx;Y=yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() {return X;}

int GetY() {return Y;}

private:

int X,Y;

};

Point::Point(Point &p)

{

X=p.X;

Y=p.Y;

cout<<"调用拷贝构造函数\n";

}

Point fun2()

{

Point Temp(10,20); //调用构造函数

return Temp;

}

void main()

{

Point A(4,5); //a行

Point B(A); //b行

cout<

B=fun2();

cout<

}

(2) 创建一个雇员类,该类中数据成员有姓名、家庭住址和邮政编码等,其功能有修改姓名、显示数据信息,要求其功能函数的原型放在类定义体中。

#include

using namespace std;

class Employee

{

public:

Employee(char *pName="",char *pAddress="",char *pPostalcode="")

{

name = new char(strlen(pName)+1);

strcpy(name,pName);

address = new char(strlen(pAddress)+1);

strcpy(address,pAddress);

strcpy(postalcode,pPostalcode);

}

void modifyName(char *pName)

{

strcpy(name,pName);

}

void modifyAddress(char *pAddress)

{

strcpy(address,pAddress);

}

void modifyPostalcode(char *pPostalcode)

{

strcpy(postalcode,pPostalcode);

}

void display()

{

cout<<"姓名:"<

<<"地址:"<

<<"邮编:"<

}

private:

char *name;

char *address;

char postalcode[7];

};

int main()

{

Employee em[3]={Employee("李琳","张家口","075000"),

Employee("张强","北京","100011"),

Employee("王明","天津","300232")};

for(int i=0;i<3;i++)

em[i].display();

em[1].modifyName("张晓强");

cout<<"张强改名为张晓强,第二个雇员的信息为:"<

em[1].display();

return 0;

}

思考:为什么将姓名、家庭住址设计为指针类型?邮政编码设计为数组类型?

2. 编写程序

建立一个矩阵类Array,存储一个4*4的矩阵并能在矩阵中查找数据。要求如下:

(a)私有数据成员

·int px[4][4]:存储一个4*4矩阵的值。 ·int n: 矩阵的行数。 (b)公有数据成员

·int x:存储根据查找要求在矩阵中要找到的某数。 ·int im,jm:存储该数所在的行、列值。 (c) 公有成员函数

·构造函数:初始化n 的值为4,x 、im 、jm 为0。 ·void input(int a[][4]):将一个矩阵赋给该对象中的数组。 ·void find():在该对象存储的矩阵中查找值最小的数,保存该数及该数所在的行、列值到x,im,jm 中。

·void print():按行输出矩阵的值

(d)编写一个程序测试该类,使用以下测试数据,输出矩阵的值,查找值最小的数并输出x 、im 、jm 的值。

?????

??

??

???43211615141312111098765

3. 熟悉多文件程序

(1)在实际程序设计中,一个源程序按照结构可以划分为3个文件:类声明文件(*.h 文件)、类实现文件(*.cpp )和类的使用文件(*.cpp ,主函数文件)。 * 类声明文件(*.h 文件):

将类的声明部分放在类声明文件(头文件)中,这就形成了类的public 接口,向用户提供调用类成员函数所需的函数原型。 * 类实现文件(*.cpp ):

将类成员函数的定义放在类实现文件中,这就形成了类的实现方法。 * 类的使用文件(*.cpp,主函数文件):

将类的使用部分(通常是主程序)放在类使用文件中, 这样可以清晰地表示出本程序所要完成的工作。

(2)尝试完成一个C++多文件程序的开发过程。

先依据之前学习的内容创建一个新的空工程,然后依次在该工程中添加下列文件:

//文件1 student.h (类的声明部分)

#include

using namespace std;

class Student{

public: //类的外部接口

Student(char *name1,char *stu_no1,float score1);

//声明构造函数

~Student(); //声明析构函数

void modify(float score1); //声明数据修改函数

void show(); //声明数据输出函数

private:

char *name; //学生姓名

char *stu_no; //学生学号

float score; //学生成绩

};

//文件2 student.cpp (类的实现部分)

#include "student.h" //包含类的声明文件

Student::Student(char *name1,char *stu_no1,float score1) {

name=new char[strlen(name1)+1]; //构造函数的实现

strcpy(name,name1);

stu_no=new char[strlen(stu_no1)+1];

strcpy(stu_no,stu_no1); score=score1;

}

Student::~Student() //析构函数的实现

{ delete []name; delete []stu_no; }

void Student::modify(float score1)//数据修改函数的实现

{ score=score1; }

void Student::show() //数据输出函数的实现

{ cout<<"name: "<

cout<<"stu_no: "<

cout<<"score: "<

}

//文件3 studentmain.cpp (类的使用部分)

#include "student.h" //包含类的声明文件

int main()

{ Student stu1("Liming","20080201",90);

//定义类Student的对象stu1,调用stu1的构造函数,初始化对象stu1

stu1.show();

//调用stu1的成员函数show,显示stu1的数据

stu1.modify(88);

//调用stu1的成员函数modify,修改stu1的数据

stu1.show();

//调用stu1的成员函数show,显示stu1修改后的数据

return 0;

}

四、实验步骤

1.【程序1】

#include

using namespace std;

class Point

{

public:

Point(int xx = 0, int yy = 0)

{

X = xx; Y = yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() { return X; }

int GetY() { return Y; }

private:

int X,Y;

};

Point::Point(Point &p)

{

X=p.X;

Y=p.Y;

cout<<"调用拷贝构造函数\n";

}

void main()

{

Point A(3,4); //a行

Point B(A); //b行

cout<

}

(a)

#include

using namespace std;

class Point

{

public:

Point(int xx = 0, int yy = 0)

{

X = xx; Y = yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() { return X; }

int GetY() { return Y; }

private:

int X,Y;

};

Point::Point(Point &p)

{

X=p.X;

Y=p.Y;

cout<<"调用拷贝构造函数\n";

}

void main()

{

Point A(3,4); //a行

Point B=A; //b行

cout<

}

(b)

#include

using namespace std;

class Point

{

public:

Point(int xx = 0, int yy = 0)

{

X = xx; Y = yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() { return X; }

int GetY() { return Y; }

private:

int X,Y;

};

Point::Point(Point &p)

{

X=p.X;

Y=p.Y;

cout<<"调用拷贝构造函数\n";

}

void main()

{

Point A(3,4); //a行

Point B; B=A ; //b行

cout<

}

【程序2】

#include

using namespace std;

class Point

{

public:

Point(int xx = 0,int yy = 0)

{

X = xx; Y = yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() {return X;}

int GetY() {return Y;}

private:

int X,Y;

};

Point::Point(Point &p)

{

X = p.X;

Y = p.Y;

cout<<"调用拷贝构造函数\n";

}

void fun1(Point p)

{

cout<

}

void main()

{

Point A(4,5); //a行

Point B(A); //b行

cout<

fun1(B); //调用拷贝构造函数,实现形参和实参结合}

【程序3】

#include

using namespace std;

class Point

{

public:

Point(int xx=0,int yy=0)

{

X=xx;Y=yy;

cout<<"调用构造函数\n";

}

Point(Point &p);

int GetX() {return X;}

int GetY() {return Y;}

private:

int X,Y;

};

Point::Point(Point &p)

{

X=p.X;

Y=p.Y;

cout<<"调用拷贝构造函数\n";

}

Point fun2()

{

Point Temp(10,20); //调用构造函数

return Temp;

}

void main()

{

Point A(4,5); //a行

Point B(A); //b行

cout<

B=fun2();

cout<

}

#include

using namespace std;

class Employee

{

public:

Employee(char *pName="",char *pAddress="",char *pPostalcode="") {

name = new char(strlen(pName)+1);

strcpy(name,pName);

address = new char(strlen(pAddress)+1);

strcpy(address,pAddress);

strcpy(postalcode,pPostalcode);

}

void modifyName(char *pName)

{

strcpy(name,pName);

}

void modifyAddress(char *pAddress)

{

strcpy(address,pAddress);

}

void modifyPostalcode(char *pPostalcode)

{

strcpy(postalcode,pPostalcode);

}

void display()

{

cout<<"姓名:"<

<<"地址:"<

<<"邮编:"<

}

private:

char *name;

char *address;

char postalcode[7];

};

int main()

{

Employee em[3]={Employee("李琳","张家口","075000"),

Employee("张强","北京","100011"),

Employee("王明","天津","300232")};

for(int i=0;i<3;i++)

em[i].display();

em[1].modifyName("张晓强");

cout<<"张强改名为张晓强,第二个雇员的信息为:"<

em[1].display();

return 0;

}

2

#include

#include

using namespace std;

class Array

{

public:

int x; //存储根据查找要求在矩阵中要找到的某数

int im,jm; //存储该数所在的行、列值

Array();

void input(int a[][4]); //将一个矩阵赋给该对象中的数组

void find(); //在该对象存储的矩阵中查找值最小的数

void print();

private:

int px[4][4]; //存储一个4*4矩阵的值。

int n; //矩阵的行数

}arr;

Array::Array()

{

x=0;

n=4;

im=0;

jm=0;

}

void Array::input(int a[][4])

{

for(int i=0;i<4;i++)

{

for(int j=0;j<4;j++)

px[i][j]=a[i][j];

}

}

void Array::print()

{

cout<<"矩阵信息为:"<

for(int i=0;i<4;i++)

{

for(int j=0;j<4;j++)

cout<

cout<

}

cout<

cout<<"其中最小的数为:"<

cout<<"该数所在行数为:"<

<<"该数所在列数为:"<

void Array::find()

{

x=px[0][0];

for(int i=0;i<4;i++)

for(int j=0;j<4;j++)

if(px[i][j]

{

x=px[i][j];

im=i+1;

jm=j+1;

}

}

void main()

{

int a[4][4];

cout<<"请输入(4*4)矩阵信息:"<

for(int i=0;i<4;i++)

for(int j=0;j<4;j++)

{

cin>>a[i][j];

}

arr.input(a);

arr.find();

arr.print();

}

五、实验结果

1.【程序1】

(a)程序结果不会有变化

(b)程序结果会发生变化

【程序2】

【程序3】

(2)

答:姓名和地址设为指针类型是因为指针传递时双向的,使得调用的函数也能使内容改变。邮政编码设为数组类型是因为邮政编码的第一个数可能是0,这样就能避免0不被显示出来。

2.

六、实验心得

预测时,出现错误,与调试的结果不同。找出自己哪里出错了。在编写4*4的矩阵时,程序出现了很多问题,输出方法编写也出现错误,说明这方面还不太熟,要看书,多多练习。

数据结构_实验三_栈和队列及其应用

实验编号:3四川师大《数据结构》实验报告2016年10月29日 实验三栈和队列及其应用_ 一.实验目的及要求 (1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们; (2)本实验训练的要点是“栈”的观点及其典型用法; (3)掌握问题求解的状态表示及其递归算法,以及由递归程序到非递归程序的转化方法。 二.实验内容 (1)编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等); (2)应用栈的基本操作,实现数制转换(任意进制); (3)编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列); (4)利用栈实现任一个表达式中的语法检查(括号的匹配)。 (5)利用栈实现表达式的求值。 注:(1)~(3)必做,(4)~(5)选做。 三.主要仪器设备及软件 (1)PC机 (2)Dev C++ ,Visual C++, VS2010等 四.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)(1)编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等); A.顺序储存: 代码部分: 栈" << endl; cout << " 2.出栈" << endl; cout << " 3.判栈空" << endl; cout << " 4.返回栈顶部数据" << endl; cout << " 5.栈长" << endl; cout << " 0.退出系统" << endl;

cout << "你的选择是:" ; } 链式储存: 代码部分: 栈"<>select; switch (select){ case 0:break; case 1: cout<<"push data:"; cin>>e; if(push(L,e)){

数据结构-堆栈和队列实验报告

实验二堆栈和队列 实验目的: 1.熟悉栈这种特殊线性结构的特性; 2.熟练并掌握栈在顺序存储结构和链表存储结构下的基本运算; 3.熟悉队列这种特殊线性结构的特性; 3.熟练掌握队列在链表存储结构下的基本运算。 实验原理: 堆栈顺序存储结构下的基本算法; 堆栈链式存储结构下的基本算法; 队列顺序存储结构下的基本算法;队列链式存储结构下的基本算法;实验内容: 3-18链式堆栈设计。要求 (1)用链式堆栈设计实现堆栈,堆栈的操作集合要求包括:初始化Stacklnitiate (S), 非空否StackNotEmpty(S),入栈StackiPush(S,x), 出栈StackPop (S,d),取栈顶数据元素StackTop(S,d); (2)设计一个主函数对链式堆栈进行测试。测试方法为:依次把数据元素1,2,3, 4,5 入栈,然后出栈并在屏幕上显示出栈的数据元素; (3)定义数据元素的数据类型为如下形式的结构体, Typedef struct { char taskName[10]; int taskNo; }DataType; 首先设计一个包含5个数据元素的测试数据,然后设计一个主函数对链式堆栈进行测试,测试方法为:依次吧5个数据元素入栈,然后出栈并在屏幕上显示出栈的数据元素。 3-19对顺序循环队列,常规的设计方法是使用対尾指针和对头指针,对尾指针用于指示当 前的対尾位置下标,对头指针用于指示当前的対头位置下标。现要求: (1)设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化,入队列,出队列,取对头元素和判断队列是否为空; (2)编写一个主函数进行测试。 实验结果: 3-18 typedef struct snode { DataType data; struct snode *n ext; } LSNode; /* 初始化操作:*/

大学计算机基础实验内容及实验报告1-3-2

第一部分:实验前准备 1、在个人存储设备上,例如u盘上建立个人信息文件夹,文件夹命名为:学号班级本人姓名例如:20160001通信1601章实验 2.将第二部分所作的实验全部保存在该文件夹中 第二部分:实验内容 实验一:Windows 7基本操作(2学时) 一、实验目的 通过本实验的学习,使学生了解或掌握Windows 7操作系统的基本操作以及其对文件和磁盘的管理。 二、实验内容 具体实验要求如下: 1、熟悉输入法切换:按键盘组合键“Ctrl+Space”、“Ctrl+Shift”;熟悉全角/半角切换: “Shift+Space”。 2、熟悉文件夹显示方式和排序方式。 3、熟悉单个和多个文件的选定,然后进行移动和复制操作。 4、实验操作: 在U盘个人信息文件夹下,建立文件夹:WIN7 (1)在WIN7文件夹中建立一个名为WENHUA和APPLE两个新文件夹。 (2)在WIN7文件夹下创建文件EAT.TXT,并设置属性为只读。 (3)将文件EAT.TXT文件复制到APPLE文件夹中,并将新复制的文件改名为文件BASE.DOCX。 (4)将APPLE文件夹中BASE.DOCX文件建立名为BASE的快捷方式,并将其移动到WIN7文件夹中。 (5)利用Windows的搜索功能,查找文件EAT.TXT (6)删除APPLE文件夹中的BASE.DOCX文件。 三、实验要求

束后保存好完整的电子版实验报告和文件夹。 四、实验准备 认真学习教材中有关Windows 7操作系统的所有内容,实验时需携带教材。 五、思考题 文件扩展名代表了文件的类型。如果修改文件扩展名,会产生什么样的结果? 六、实验报告(见模板) 上机实验完成后,打开文件“实验一报告.docx”,填写实验内容。 七、注意事项及其它说明 本课程考试方式为上机考试,但上机时间有限,希望大家在课后多多进行练习(按照以往的经验,分数与练习次数成正比)。 请各位同学按时上机和下机,不要迟到或拖延下课,以免影响机房老师工作或后面同学上课。 严格遵守机房的规章制度,不得在机房内食用任何餐饮。 想望大家在下课后自觉将凳子放回到实验桌下,减少机房老师的重复性劳动,谢谢大家。

队列实验报告

一.实验项目名称 循环队列和链式队列的创建 二、实验目的 1、掌握队列的特点 (先进先出 FIFO) 及基本操作 ,如入队、出队等, 2、队列顺序存储结构、链式存储结构和循环队列的实现,以便在 实际问题背景下灵活应用。 三、实验内容 1.链式队列的实现和运算 2.循环队列的实现和运算 四、主要仪器设备及耗材 VC++6.0 运行环境实现其操作 五.程序算法 (1)循环队列操作的算法 1>进队列 Void enqueue (seqqueue &q, elemtype x) { if ((q.rear+1)%maxsize = = q.front) cout<< ” overflow”; else { q.rear=(q.rear+1)%maxsize; // 编号加 1 或循环回第一个单元 q.queue[q.rear]=x; } } 2>出队列 Void dlqueue(seqqueue &q ) { if (q.rear= =q.front)cout<< ” underflow”; else q.front =(q.front+1)%maxsize; } 3>取对头元素

elemtype gethead(seqqueue q ) { if(q.rear= =q.front) { cout<<” underflow;” return NULL;} else return q.queue[(q.front+1)%maxsize]; //front 指向队头前一个位置 } 4>判队列空否 int empty(seqqueue q ) { if (q.rear= =q.front) else return 0; reurn 1; } (2).链队列操作的算法 1>.链队列上的初始化 void INIQUEUE( linkqueue&s) {link *p; p=new link; p->next=NULL;//p 是结构体指针类型,用 s.front=p;//s 是结构体变量,用. s.rear=p;//头尾指针都指向头结点 -> } 2>.入队列 void push(linkqueue &s, elemtype x) { link*p;//p 是结构体指针类型,用-> p=new link; p->data=x; p->next=s.rear->next;//s 是结构体变量,用s.rear->next=p; s.rear=p;//插入最后 . } 3>判队空 int empty( linkqueue s ) {if (s.front= =s.rear) return 1; else return 0; } 4>.取队头元素 elemtype gethead( linkqueue s ) { if (s.front= =s.rear) else retuen return NULL; s.front->next->data; }

大学大学计算机实验报告

大学大学计算机实验报告 一、实验目的 1.掌握Word文档的创建、并按指定路径、指定文件名保存文件。 2.掌握文档中文字的快速输入并设置:文字的字号、字体、字颜色、行间距、字间距等格式。 3.掌握文档中段落的分栏、首字下沉、底纹、边框、页眉页脚等的设置方法。 4.掌握文档中插入艺术字、剪贴画、图片及公式的方法、并设置其版式及图片文字说明。5.掌握规则、非规则表格的设计。 5.掌握使用Word软件对论文、科技文章进行排版。 6.掌握文档中页面设置、文字的字体字号、颜色、行间距、字间距的设置。 8.掌握分页、分节要点,按不同章节的要求,设置不同的页眉、页脚。 7.掌握正文及三级标题的设置,并自动生成目录(或有修改后同步该目录)。 10.掌握论文封面的设计。 二、实验内容 1.单文档图文混排。 2.长文档排版。 三、实验过程及结果

计算机系统由计算机系统赖以工作的实体。后者是各种程序和文件,用于指挥全系统按指定的要求进行工作。 通常所说的计算机均指数字计算机,其运算处理的数据,是用离散数字量表示的。而模拟计算机运算处理的数据是用连续模拟量表示的。模拟机和数字机相比较,其速度快、与物理设备接口简单,但精度低、使用困难、稳定性和可靠性差、价格昂贵。故模拟机已趋淘汰,仅在要求响应速度快,但精度低的场合尚有应用。把二者优点巧妙结合而构成的混合型计算机,尚有一定的生命力。 硬件和软件两部分组成。硬件包括中央处理机、存储器和外部设备等;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理计算机系统由硬件(子)系统和软件(子)系统组成。前者是借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是电子计算机分数字和模拟两类。

大学计算机实验报告

《大学计算机基础Ⅰ》课程 实验报告 (以上由学生填写) 西南大学计算机与信息科学学院 计算机基础教育系 2017年12月8日 实验成绩记载 课程Array实验报告一 一、实验题目:Win7得基本操作、文件管理与控制面板得使用 二、实验目得: 1.掌握“计算机"(资源管理器)得使用。 2.掌握文件与文件夹得基本操作。 3.了解显示属性得相关内容,掌握显示属性得设置。 4.掌握鼠标、键盘得属性设置。 5.掌握应用程序得添加/删除功能。 6.掌握输入法得设置方法.

7.掌握系统属性得设置方法。 8.掌握计算机名或域得查瞧及更改方法。 三、实验主要内容及过程(实验主要内容得介绍、主要得操作步骤) (列出实验主要内容通过截屏显示出操作过程以及实验结果) (一)文件与文件夹得管理 1、双击桌面上“计算机"→选择D盘→空白处右击选择“新建”重命名 文件夹→改名为“windows练习”→双击“windows练习"→右击空白处分别新建三个文件夹为“LX1”、“LX2”、“LX3”. 2、双击“C盘”打开→搜索框搜索“*、wmf”单击搜索按钮→选择任 意三个图片文件→右击→选择“复制”→粘贴至“LX1"文件夹中→并对三个文件分别重命名为“图片1、wmf”、“图片2、wmf”、“图片3、wmf”。 3、打开“LX1”文件夹→右击图片“1、wmf”→剪切→打开“LX2” 文件夹→右击空白处点击“粘贴”→选中剩下得两个文件→复制→打开“LX3”文件夹→右击选择“粘贴”→右击“LX2”选择“剪切” →打开“LX1”文件夹→右击选择“粘贴”

4、右击“LX3”文件夹→选择“属性”→选择“常规”属性卡→勾选“隐 藏”→右击“LX2"文件夹→选择“常规"属性卡→勾选“已读"

数据结构-队列实验报告

《数据结构》课程实验报告 一、实验目的和要求 (1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。 (2)掌握队列的顺序表示和实现。 二、实验环境 Windows7 ,VC 三、实验内容及实施 实验三:队列 【实验要求】 构建一个循环队列, 实现下列操作 1、初始化队列(清空); 2、入队; 3、出队; 4、求队列长度; 5、判断队列是否为空; 【源程序】 #include #define MAXSIZE 100 #define OK 1; #define ERROR 0; typedef struct { int *base; int front; int rear; }SqQueue;//队列的存储结构 int InitQueue(SqQueue &Q) {

Q.base=new int[MAXSIZE]; Q.front=Q.rear=0; return OK; }//队列的初始化 int EnQueue(SqQueue &Q,int e) { if((Q.rear+1)%MAXSIZE==Q.front) return ERROR; Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXSIZE; return OK; }//队列的入队 int DeQueue(SqQueue &Q,int &e) { if(Q.front==Q.rear) return ERROR; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXSIZE; return OK; }//队列的出队 int QueueLength(SqQueue &Q) { int i; i=(Q.rear-Q.front+MAXSIZE)%MAXSIZE; return i; }//求队列长度 void JuQueue(SqQueue &Q) { if(Q.rear==Q.front) printf("队列为空"); else printf("队列不为空"); }//判断队列是否为空 void QueueTraverse(SqQueue &Q)

栈的操作(实验报告)

实验三栈和队列 3.1实验目的: (1)熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现; (2)熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。 3.2实验要求: (1)复习课本中有关栈和队列的知识; (2)用C语言完成算法和程序设计并上机调试通过; (3)撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。 3.3基础实验 [实验1] 栈的顺序表示和实现 实验内容与要求: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍历顺序栈 (6)置空顺序栈 分析: 栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。 对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top= =MAXNUM-1,栈满时,不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢。 出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。 注意: (1)顺序栈中元素用向量存放 (2)栈底位置是固定不变的,可设置在向量两端的任意一个端点 (3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置 参考程序: #include #include #define MAXNUM 20

大学计算机实验报告2

《大学计算机基础Ⅰ》课程 实验报告手册 \ 实验教师(签字) 西南大学计算机与信息科学学院 计算机基础教育系 年月日

一、实验说明 本课程实验分为一般性实验(验证和简单设计)和综合性实验(课程设计)两部分。从第3周开始参考实验任务书(本报告中的五部分)完成每周规定的实验,并根据进度按要求认真填写本实验报告中的六、七部分,此实验报告将作为实验成绩评定的依据之一。 本课程实验从开课学期第3周开始实习,每周2学时,16周结束,共28学时。除统一安排的时间外,学生还可根据自己的实际适当安排课余时间上机。上机内容参见本报告中的“五、实验任务书”部分。 二、实验目的 通过本实验,让学生掌握计算机的基本操作和基本技能,能够学会知识的运用与积累,能够举一反三,具备一定的独立解决问题的能力和信心,培养学生熟练地使用常用软件的能力及严肃认真的科学作风,为今后的学习和工作打下良好的基础。 三、实验要求 1、每次实验课将考勤,并作为实验成绩的重要依据。 2、每次实验前学生必须充分准备每次的实验内容,以保证每次上机实验的效果。实验过程中必须独立完成。 3、学期结束时,每位同学应将自己的《实验报告》交各专业班长或学习委员,由班长或学习委员以专业为单位、按学号从小到大排列好统一交给实验指导老师,否则无实验成绩。 四、实验报告要求 一共要求填写3个阶段性实验报告、1个综合性实验报告和1份学期总结,与每份实验报告对应产生的电子文档交由实验老师指定的位置,该电子文档也将作为实验成绩评定的依据之一。 五、实验任务书 教材:《大学计算机基础》第五版高等教育出版社 实验参考书:《大学计算机基础实践教程》高等教育出版社 实验一:指法练习、汉字录入 实验目的: 1.掌握鼠标和键盘的使用及正确的操作指法。 2.掌握微型计算机的打开和关闭操作 3.熟悉键盘指法和文字录入 4.了解中英文切换,全半角的切换 实验任务: 1.参见实验参考书中的实验1-1-1中的[任务1](7页) 2.参见实验参考书中的实验1-1-1中的[任务3](7页) 实验二:Windows的基本操作和文件管理操作 实验目的: 1.掌握Windows的基本知识和基本操作 2.掌握“Windows资源管理器”和“我的电脑”的使用 实验任务: 1.参见实验参考书中的实验1-2-1中的全部任务(14页) 2.参见实验参考书中的实验1-2-2中的全部任务(18页)

队列的表示及实现实验报告

陕西科技大学实验报告 班级信工082 学号200806030202 姓名李霄实验组别 实验日期2010-12-20 室温报告日期2010-12-20 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 实验名称:实验三队列的表示及实现 实验目的: 1、通过实验进一步理解队列的“先进先出”特性。 2、掌握队列的逻辑结构及顺序存储结构和链式存储结构。 3、熟练运用C语言实现队列的基本操作。 4、灵活运用队列解决实际问题。 实验内容: 1、实现链队列,并编写主函数进行测试。测试方法为:依次10、20、 30、40,然后,出对3个元素。再次入队50、60,然后出队3个元 素。查看屏幕上显示的结果是否与你分析的结果一致。 2、在1的基础上,再出队1个元素。查看屏幕上显示的结果是否与你 分析的结果一致。 3、编写主函数比较取队头元素操作和出队操作。 实验学时:2学时 实验程序 #include "stdio.h" #include "conio.h" typedef int DataType; typedef struct { DataType data; struct QNode* next; }LQNode,*PQNode; typedef struct { PQNode front,rear; }LinkQueue; int InitQueue(LinkQueue *Q) { Q->front=Q->rear=(PQNode)malloc(sizeof(LQNode));

if (!Q->front){printf("errors\n");return 0;} Q->front->next=NULL; return 1; } int QueueEmpty(LinkQueue Q) { if(Q.front==Q.rear) return 1; else return 0; } int EnQueue(LinkQueue *Q,DataType e) { PQNode p; p=(PQNode)malloc(sizeof(LQNode)); if(!p) { printf("\n\nerrors\n\n"); return 0; } p->data=e; p->next=NULL; Q->rear->next=p; Q->rear=p; return 1; } int DeQueue(LinkQueue *Q,DataType *e) { PQNode p; if( Q->front==Q->rear) { printf("\nerrors\n");

大学生计算机实验报告(完整版)

《大学计算机基础》实验3.1 文件和文件夹的管理 实验报告 专业班级:经贸1103 姓名——- 学号201118910315 指导教师:———完成时间:2011.10 一、实验题目 文件和文件夹的管理 二、实验目的 1.熟悉Windows XP的文件系统。 2.掌握资源管理器的使用方法。 3.熟练掌握在Windows XP资源管理器下,对文件(夹)的选择、新建、移动、复制、删除、重命名的操作方法。 三、实验内容 1.启动资源管理器并利用资源管理器浏览文件。 2.在D盘创建文件夹 3.在所创建文件夹中创建Word文件。 4.对所创建文件或文件夹执行复制、移动、重命名、删除、恢复、创建快捷方式及设置共享等操作。 四、实验步骤 (一)文件与文件夹管理 1.展开与折叠文件夹。右击开始,打开资源管理器,在左窗格中点击“+”展开,点击“—”折叠 2.改变文件显示方式。打开资源管理器/查看,选择缩略、列表,排列图标等

3.建立树状目录。在D盘空白处右击,选择新建/文件夹,输入经济贸易学院,依次在新建文件夹中建立经济类1103班/王帅、王鹏 4..创建Word并保存。打开开始/程序/word,输入内容。选择文件/另存为,查找D盘/经济贸易学院/1103班/王帅,单击保存 5.复制、移动文件夹 6.重命名、删除、恢复。右击文件夹,选择重命名,输入新名字;选择删除,删除文件 7.创建文件的快捷方式。右击王帅文件夹,选择发送到/桌面快捷方式

8.设置共享文件。右击王帅,选择属性/共享/在网络上共享这个文件/确定 9.显示扩展名。打开资源管理器/工具/文件夹选项/查看/高级设置,撤销隐藏已知文件的扩展名 (二)控制面板的设置。 1.设置显示属性。右击打开显示属性/桌面、屏幕保护程序 2.设置鼠标。打开控制面板/鼠标/按钮(调整滑块,感受速度)、指针 3.设置键盘。打开控制面板/键盘/速度(调整滑块,感受速度)、硬件 4.设置日期和时间打开控制面板/日期和时间 5.设置输入法。打开控制面板/区域与语言选项/详细信息/文字服务与输入语言

实验三实验报告

实验三实验报告 1、简易计算器 (1)问题描述 由键盘输入一算术表达式,以中缀形式输入,试编写程序将中缀表达式转换成一棵二叉表达式树,通过对该的后序遍历求出计算表达式的值。 (2)基本要求 a.要求对输入的表达式能判断出是否合法。不合法要有错误提示信息。 b.将中缀表达式转换成二叉表达式树。 c.后序遍历求出表达式的值 (3)数据结构与算法分析 一棵表达式树,它的树叶是操作数,如常量或变量名字,而其他的结点为操作符。 a.建立表达式树。二叉树的存储可以用顺序存储也可用链式存储。当要创建二叉树时,先从表达式尾部向前搜索,找到第一个优先级最低的运算符,建立以这个运算符为数据元素的根结点。注意到表达式中此运算符的左边部分对应的二叉绔为根结点的左子树,右边部分对应的是二叉绔为根结点的右子树,根据地这一点,可用递归调用自己来完成对左右子树的构造。 b.求表达式的值。求值时同样可以采用递归的思想,对表达式进行后序遍历。先递归调用自己计算左子树所代表的表达式的值,再递归调用自己计算右子树代表的表达式的值,最后读取根结点中的运算符,以刚才得到的左右子树的结果作为操作数加以计算,得到最终结果。 (4)需求分析 程序运行后显示提示信息,输入任意四则运算表达式,倘若所输入的表达式不合法程序将报错。 输入四则运算表达式完毕,程序将输出运算结果。 测试用的表达式须是由+、-、*、/运算符,括号“(”、“)”与相应的运算数组成。运算数可以是无符号浮点型或整型,范围在0~65535。 (5)概要设计 二叉树的抽象数据类型定义 ADT BinaryTree{ 数据对象:表达式运算数{ num | 0< num < 65535 } 表达式运算符{ opr | + , - , * , / } 数据关系:由一个根结点和两棵互不相交的左右子树构成,且树中结点具有层次关系。根结点必须为运算符,叶子结点必须为运算数。 基本操作: InitBiTree(&T , &S) 初始条件:存在一四则运算前缀表达式S。 操作结果:根据前缀表达式S构造相应的二叉树T。 DestroyBiTree(&T) 初始条件:二叉树T已经存在。 操作结果:销毁T。 Value(&T) 初始条件:二叉树T已经存在。 操作结果:计算出T所表示的四则运算表达式的值并返回。

《大学计算机基础》上机实验报告

《大学计算机基础》 上机实验报告 班级: 姓名: 学号: 授课教师: 日期:年月日

目录 一、Windows操作系统基本操作 ............................. - 1 - 二、Word文字处理基本操作 ................................ - 4 - 三、Excel电子表格基本操作 ............................... - 6 - 四、PowerPoint幻灯片基本操作 ............................ - 8 - 五、网页设计基本操作..................................... - 9 - 六、Access数据库基本操作 ............................... - 10 - 上机实验作业要求: ○1在实验报告纸上手写并粘贴实验结果; ○2每人将所有作业装订在一起(要包封面); ○3全部上机实验结束后全班统一上交; ○4作业内容不得重复、输入的数据需要有差别。

实验名称一、Windows操作系统基本操作 实验目的1、掌握Windows的基本操作方法。 2、学会使用“画图”和PrntScr快捷键。 3、学会使用“计算器”和Word基本操作。 实验内容 1、日历标注 利用“画图”和Word软件,截取计算机上日历的图片并用文字、颜色、图框等标注出近期的节假日及其名称,并将结果显示保存在下面(参考下面样图)。 运行结果是: 主要操作步骤是: 2、科学计算 利用“计算器”和Word软件,计算下列题目,并将结果截图保存在下面(参考样图)。 ○1使用科学型计算器,求8!、sin(8)、90、74、20、67、39、400、50.23、ln(785)的平均值、和值,并用科学计数法显示。 运行结果是: ②将以下十、八、十六进制数转换为二进制数:(894.8125)10、(37.5)8、(2C.4B)16 运行结果是:(需要下载使用“唯美计算器”) ○3计算下列二进制数的加法与乘法:101.1+11.11;1101*1011 运行结果是:(参考样图) 写出主要操作步骤: 3、实验心得体会

栈和队列综合实验报告

栈和队列综合实验报告 一、实验目的 (1)能够利用栈和队列的基本运算进行相关操作。 (2)进一步熟悉文件的应用 (3)加深队列和栈的数据结构理解,逐步培养解决实际问题的编程能力。 二、实验环境 装有Visual C++的计算机。 本次实验共计4学时。 三、实验内容 以下两个实验任选一个。 1、迷宫求解 设计一个迷宫求解程序,要求如下: 以M × N表示长方阵表示迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 能任意设定的迷宫 (选作)如果有通路,列出所有通路 提示: 以一个二维数组来表示迷宫,0和1分别表示迷宫中的通路和障碍,如下图迷宫数据为:11

01 01 01 01 01 01 01 11 入口位置:1 1 出口位置:8 8 四、重要数据结构 typedef struct{ int j[100]; int top;栈顶指针,一直指向栈顶 }stack;//存放路径的栈 int s[4][2]={{0,0},{0,0},{0,0},{0,0}}; //用于存放最近的四步路径坐标的数组,是即使改变的,即走一步,便将之前的坐标向前移一步,将最早的一步坐标覆盖掉,新的一步放入数组末尾其实功能和队列一样。 其作用是用来判断是否产生了由于本程序算法产生的“田”字方格内的死循环而准备的,用于帮助跳出循环。 五、实现思路分析 if(a[m][n+1]==0&&k!=3){ n++; k=1; o=0; }else if(a[m+1][n]==0&&k!=4){ m++;

k=2; o=0; }else if(a[m][n-1]==0&&k!=1){ n--; k=3; o=0; }else if(a[m-1][n]==0&&k!=2){ m--; k=4; o=0; }else{ o++;} if(o>=2){ k=0; }//向所在方格的四个方向探路,探路顺序为→↓←↑(顺时针),其中if判断条件内的&&k!=n和每个语句块中的对k赋值是为防止其走回头路进入死循环,而最后一个else{}内语句是为了防止进入死路时,不能走回头路而造成的死循环。 push(q,m,n);//没进行一次循环都会讲前进的路径入栈。 if (pushf(&s[0][0],m,n)==0){ k=3;}//用来判断是否产生了由于本程序探路算法产生的“田”字方格内的死循环而准备的,用于帮助跳出田字循环。同时会将路径存入用于下次判断 六、程序调试问题分析 最开始写完时是没有死路回头机制的,然后添加了两步内寻路不回头机制。 第二个是“田”字循环问题,解决方法是加入了一个记录最近四步用的数组和一个判断田字循环的函数pushf。

实验三队列实验报告

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称数据结构与算法 项目名称实验三队列实验 班级 学号 1 姓名 同组人员无 实验日期

实验三队列实验 实验题目:建立含有若干个元素的循环队列和链队列,并分别实现循环队列和 链队列的入队和出对操作。 (1)先实现循环队列的入队和出队操作 1.问题分析 本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作。 完成该实验需要以下4个子任务: ○1定义一个循环队列的存储结构,定义队列的基本算法。 ○2定义一个display()函数实现队列元素的输出看入队是否成功 ○3通过队列的基本算法实现队列的出队操作 ○4在主函数中完成操作 测试数据设计如下: 1 2 3 4 5 6 2.概要设计 为了实现上述程序功能,需要:○1声明一个循环队列○2定义出队列的基本算法,○3通过键盘输入5个整数,入队,出队○4在主函数中先往队列里输入5个元 素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。 1)本程序包含7个函数: 1主函数main() 2.置空队:InitQueue() 3.判对空: QueueEmpty() 4.判队满:QueueFull() 5.入队:Add() 6.出队:Delete() 7.display()

各函数关系如下: InitQueue() QueueEmpty() Main () QueueFull() Add()Main Delete() display() 3、详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。 (1)循环队列 #define maxlen 10 typedef struct{ int data [maxlen]; int front; int rear; }SeqQueue; (2)队列基本算法 SeqQueue *InitQueue(SeqQueue *q) //建立一个空循环队列{ q=(SeqQueue *)malloc(sizeof (SeqQueue)); q->front=0; q->rear=0; return q; } int QueueFull (SeqQueue *q){ //判断队列是否为满 if (q->front==(q->rear+1)%maxlen) return 1; else return 0; }

栈和队列及其应用实验报告

数据结构实验报告 实验名称:栈和队列及其应用 班级:12级电气本2 学号:2012081227 姓名:赵雪磊 指导教师:梁海丽 日期:2013年9月23日 数学与信息技术学院 一、实验目的

1. 掌握栈和队列的概念。 2.掌握栈和队列的基本操作(插入、删除、取栈顶元素、出队、入队等)。 3.理解栈和队列的顺序、链式存储。 二、实验要求 利用顺序栈将任意一个给定的十进制数转换成二进制、八进制、十六进制数并输出。 三、算法描述 #include "stdafx.h" #include "iomanip.h" void D10to2_8_16(int i,char radix) { char m; if(i>=radix) D10to2_8_16(i/radix,radix); if((m=i%radix+'0')>0x39) m+=7; cout << m; } void main(void) { int nDec; cout << "请输入一个十进制正整数...\n" << "nDec="; cin >> nDec; cout << "转换为二进制是:"; D10to2_8_16(nDec,2); cout << endl; cout << "转换为八进制是:0"; D10to2_8_16(nDec,8); cout << endl; cout << "转换为十六进制是:0x"; D10to2_8_16(nDec,16); cout << endl; } 四、程序清单 #include #include #define N 2 //可以控制进制转换 using namespace std; typedef struct{ int *top; int *base; int stacksize; }stack;

数据结构栈和队列实验报告.doc

南京信息工程大学实验(实习)报告 实验(实习)名称栈和队列日期2017.11.8 得分指导老师崔萌萌 系计算机系专业软件工程年级2016 班次(1) 姓名学号 一、实验目的 1、学习栈的顺序存储和实现,会进行栈的基本操作 2、掌握递归 3、学习队列的顺序存储、链式存储,会进行队列的基本操作 4、掌握循环队列的表示和基本操作 二、实验内容 1、用栈解决以下问题: (1)对于输入的任意一个非负十进制数,显示输出与其等值的八进制数,写出程序。(2)表达式求值,写出程序。 2、用递归写出以下程序: (1)求n!。 (2)汉诺塔程序,并截图显示3、4、5个盘子的移动步骤,写出移动6个盘子的移动次数。

3、编程实现:(1)创建队列,将asdfghjkl依次入队。(2)将队列asdfghjkl依次出队。 4、编程实现创建一个最多6个元素的循环队列、将ABCDEF依次入队,判断循环队列是否队满。 三、实验步骤 1.栈的使用 1.1 用栈实现进制的转换: 代码如下: #include #include using namespace std; int main() { stack s; //栈s; int n,radix; printf("请输入要转换的十进制非负整数: "); scanf("%d",&n); printf("请输入目标进制: "); scanf("%d",&radix);

printf("转换为%d进制: ",radix); while(n) { s.push(n%radix); n /= radix; } while(!s.empty()) { //非空 printf("%d",s.top()); s.pop(); } printf("\n"); return 0; } 运行结果如下: 2.2 求表达式的值 代码如下: #include #include #include #include #define true 1 #define false 0 #define OPSETSIZE 8 typedef int Status;

大学计算机2016实验报告

大学计算机 实验报告编制教师:张敏卓学锋 钟琪张凯 审定:唐年庆 学院: 班级:级班 学号:________________________ 姓名:________________________ 2016至2017学年第1学期 计算机科学学院

实验报告说明 本课程实验从开课学期第四周开始,每周2学时上机实验课,十八周结束,其中第十八周为实验抽测,共32学时。除统一安排的时间外,学生还可根据自己的实际适当安排课余时间上机。实验课注意事项如下: (1)每次实验前学生必须充分准备 ..每次的实验内容,以保证每次上机实验的效果。 实验过程中必须独立 ..完成。 (2)每次实验课将考勤 ..,并作为实验成绩的重要依据。 (3)每次实验完成后,亲自 ..,并让老师手写. ..批阅 ..将实验报告交实验指导老师检查 或盖章签字 .....,否则实验成绩无效。 (4)实验报告中学生必须填写【实验地点 ..完成。 ....】、【实验时间 ....】,注意:必须手写 (5)每次实验完成后,请将实验结果压缩后上传 .....到服务器。 (6)学期结束时,每位同学应将自己的《实验报告册》交各班级班长或学习委员, 由班长或学习委员以班级为单位、按学号从小到大排列 ........好统一交给实验指导老师,否则无实验成绩。 附实验成绩登记表 实验名称实验一实验二实验三实验四 实验成绩

实验一:操作系统基本练习 实验日期:2016年月日实验地点:第三实验楼机房 实验成绩:指导教师姓名: 一、实验目的: 1.掌握Windows 7的启动和退出。 2.学会资源管理器、我的电脑的使用方法。 3.掌握控制面板的使用、Windows 7系统设置。 4.掌握文件和文件夹的新建、选定、复制、重命名、删除和查找等操作。 二、实验任务: 1.实验准备:在大学计算机基础课程学习平台下载“实验1”资料包,并解压于D盘,并将解压后的文件夹重新命名为你的姓名。 2.在“Text”文件夹中建立名为Test1.Txt文本文件。在所建立文本文件中用一 种输入法输入以下文字内容: 3.查找C盘中所有jpg图片,然后按照大小排列,拷贝前2个到“Image”文件夹下;把资料包中audio文件夹下的css文件的扩展名修改为.txt类型,并设置为隐藏属性。 4.把任务栏调整在左边并取消“显示时钟”,然后抓取当前桌面图像,利用画图程序保存,命名为“窗口图像.jpg”,放在Image文件夹下。 5.在桌面上分别为“记事本”和“画图”两个应用程序建立快捷方式,并把这两个快捷方式复制到Text文件夹下。 6.查询磁盘的状态后然后回答下列问题:C盘:文件系统类型、已用空间、可用空间、容量。

栈和队列实验报告

栈的顺序表示和实现 一、实验目的 1. 了解栈和队列的特性。 2. 掌握栈的顺序表示和实现。 3. 掌握栈的链式表示和实现。 4. 掌握队列的顺序表示和实现。 5. 掌握队列的链式表示和实现。 6. 掌握栈和队列在实际问题中的应用。 二、实验要求 1.认真阅读和掌握本实验的程序。 2. 上机运行本程序。 3. 保存和打印出程序的运行结果,并结合程序进行分析。 4. 按照对顺序表和单链表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果。 三、实验内容 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能: (1)初始化顺序栈。 (2)插入元素。 (3)删除栈顶元素。 (4)取栈顶元素。 (5)遍历顺序栈。 (6)置空顺序栈。 四,解题思路 五、程序清单 #include #include #define MAXNUM 20 #define ElemType int /*定义顺序栈的存储结构*/ typedef struct { ElemType stack[MAXNUM]; int top; }SqStack; /*初始化顺序栈*/ void InitStack(SqStack *p) { if(! p) printf("内存分配失败!"); p->top=-1; } /*入栈*/ void Push(SqStack *p,ElemType x)

{ if(p->toptop=p->top+1; p->stack[p->top]=x; } else printf("Overflow!\n"); } /*出栈*/ ElemType Pop(SqStack *p) { ElemType x; if(p->top>=0) { x=p->stack[p->top]; printf("以前的栈顶数据元素%d已经被删除!\n",p->stack[p->top]); p->top=p->top-1; return(x); } else { printf("Underflow!\n"); return(0); } } /*获取栈顶元素*/ ElemType GetTop(SqStack *p) { ElemType x; if(p->top>=0) { x=p->stack[p->top]; printf("\n栈顶元素喂:%d\n",x); return(x); } else { printf("Underflow!\n"); return(0); } } /*遍历顺序栈*/ void OutStack(SqStack *p) { int i; printf("\n"); if(p->top<0) printf("这是一个空栈!"); printf("\n"); for(i=p->top;i>=0;i--) printf("第%d个数据元素是:%6d\n",i,p->stack[i]); } /*置空顺序栈*/

相关文档
相关文档 最新文档