当前位置:文档之家› SSD4实验二实验报告

SSD4实验二实验报告

SSD4实验二实验报告
SSD4实验二实验报告

《用户界面设计SSD4》

实验报告

题目 UAR Component 完成日期2011-10-29

一.实验目的:

运用所学知识设计一个用户程序。通过这个练习,你需要创建一个应用程序可以帮助你了解UAR的组成部分。你创造的运用应有两个功能:

1.当用户选择UAR部件被号码,应用程序应该显示一个描述组件的内容; 2.当一个用户指定一个关键词或短语,应用程序应该显示的描述所搜索的关键字或短语和显示一组数字的位置发生。

二.实验要求:

(1)当用户选择一个底组件,应用程序应该显示组件的描述的内容;

(2)当用户指定的关键字或短语,应用程序应该搜索显示的描述发生的关键字或短语和显示的计数出现的次数和位置的第一和最后的事件,在一个字符从开始的描述。

(3)程序要求实现在文本框里输入1-7的数字,在右边的文本框里输出对应的资料,否则弹出错误提示;还要实现对字符串的搜索功能,显示字符串的数目,并在界面上显示对搜索字符串进行定位的首尾位置。

三.实验内容:

通过对SSD4课程的学习,完成如图所示的程序设计,并实现相关功能。

程序需实现功能详见需求分析。

四.实验步骤

1.显示功能:

void CExciseDlg::Ondisplay()

{

// TODO: Add your control notification handler code here

UpdateData (true);

int number;

number = m_number;

switch(number)

{

case 1:m_discription = dis1;UpdateData(false);break;

case 2:m_discription = dis2;UpdateData(false);break;

case 3:m_discription = dis3;UpdateData(false);break;

case 4:m_discription = dis4;UpdateData(false);break;

case 5:m_discription = dis5;UpdateData(false);break;

case 6:m_discription = dis6;UpdateData(false);break;

case 7:m_discription = dis7;UpdateData(false);break;

}

2.搜索功能:

void CExciseDlg::Onsearch() {

UpdateData (true);

CString findstr;

findstr = m_search;

int position;//记录地址

position = m_discription.Find(findstr);

if(-1==position)//如果不存在该字符串

{

CString newstr = "string\"" + findstr;

newstr = newstr + "\"has no found\r\ndo you try again?";

MessageBox(newstr);

}

else//存在该字符串

{

count = 1;

//计算匹配字符串出限字数

while(position<=m_discription.GetLength())

{

position = position + 1;

position = m_discription.Find(findstr,position);

if(-1!= position)

{

count++;

lastposition = position;

}

else

{

position = m_discription.GetLength() + 1;

}

}

// newstr1为显示在MessageBox的字符串

TCHAR newstr1[42]=_T("");

wsprintf(newstr1,_T("the number of occurence\" %s \":%d\r\n times in the text"),findstr,count);

if(IDOK==MessageBox(newstr1,"attention",MB_OKCANCEL))

{

//显示第一个和最后一个匹配的字符串的位置

OnCurrence1();

OnCurrence2();

UpdateData(false);

}

else

{

m_discription="";

m_number = 0;

m_search="";

UpdateData(false);

}

}

}

//出现的第一个字符串所在位置

void CExciseDlg::OnCurrence1()

{

TCHAR str1[32]=_T("");

wsprintf(str1,_T("accurence 1: position:%d"),m_discription.Find(m_search));

// CString str1 = "accurence 1: position:" + m_discription.Find(m_search);

GetDlgItem(IDC_CURRENCE1)->SetWindowText(str1);

}

//出现的最后一个字符串所在位置

void CExciseDlg::OnCurrence2()

{

TCHAR str2[32]=_T("");

wsprintf(str2,_T("accurence %d: position:%d"),count,lastposition);

// CString str2 = "accurence 2: position:" + m_discription.Find(m_search);

GetDlgItem(IDC_CURRENCE2)->SetWindowText(str2);

}

五.心得体会:

进一步熟悉程序界面的设计风格,加强了java的编程能力,特别是对特定功能的实现能力,但是由于对java不够深入了解,程序开发有点艰难,相关函数的调用不熟悉,需要加强。

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

实验编号: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.熟练掌握队列在链表存储结构下的基本运算。 实验原理: 堆栈顺序存储结构下的基本算法; 堆栈链式存储结构下的基本算法; 队列顺序存储结构下的基本算法; 队列链式存储结构下的基本算法; 实验内容: 第一题链式堆栈设计。要求 (1)用链式堆栈设计实现堆栈,堆栈的操作集合要求包括:初始化StackInitiate(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个数据元素入栈,然后出栈并在屏幕上显示出栈的数据元素。 第二题对顺序循环队列,常规的设计方法是使用対尾指针和对头指针,对尾指针用于指示当前的対尾位置下标,对头指针用于指示当前的対头位置下标。现要求: (1)设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化,入队列,出队列,取对头元素和判断队列是否为空; (2)编写主函数进行测试。 程序代码: 第一题: (1)源程序"LinStack.h"如下: #define NULL 0 typedef struct snode { DataType data; struct snode *next; } LSNode; /*(1)初始化StackInitiate(LSNode ** head) */ void StackInitiate(LSNode ** head) /*初始化带头结点链式堆栈*/

队列实验报告

一.实验项目名称 循环队列和链式队列的创建 二、实验目的 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; }

栈的操作(实验报告)

实验三栈和队列 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

数据结构-队列实验报告

《数据结构》课程实验报告 一、实验目的和要求 (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)

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

陕西科技大学实验报告 班级信工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");

实验三实验报告

实验三实验报告 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所表示的四则运算表达式的值并返回。

实验三队列实验报告

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称数据结构与算法 项目名称实验三队列实验 班级 学号 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; }

栈和队列基本操作实验报告

栈和队列基本操作实验报告 实验二堆栈和队列基本操作的编程实现【实验目的】 堆栈和队列基本操作的编程实现 要求: 堆栈和队列基本操作的编程实现(2学时,验证型),掌握堆栈和队列的建立、进栈、出栈、进队、出队等基本操作的编程实现,存储结构可以在顺序结构或链接结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序设计。 【实验性质】 验证性实验(学时数:2H) 【实验内容】 内容: 把堆栈和队列的顺序存储(环队)和链表存储的数据进队、出队等运算其中一部分进行程序实现。可以实验一的结果自己实现数据输入、数据显示的函数。 利用基本功能实现各类应用,如括号匹配、回文判断、事物排队模拟、数据逆序生成、多进制转换等。【实验分析、说明过程】 分析: 进栈操作 先创建一个以x为值的新结点p,其data域值为x则进栈操作步骤如下: 将新结点p的指针域指向原栈顶S(执行语句p->next=S)。 将栈顶S指向新结点p(执行语句S=p)。 注:进栈操作的?与?语句执行顺序不能颠倒,否则原S指针其后的链表将丢失。

出栈操作 先将结点栈顶S数据域中的值赋给指针变量*x,则删除操作步骤如下: 结点p 指针域指向原栈顶S(执行语句p=S)。 栈顶S指向其的下一个结点(执行语句S=S->next) 释放p结点空间(执行语句free(p))。 队列分析:用链式存储结构实现的队列称为链队列,一个链队列需要一个队头指针和一个队尾指针才能唯一确定。队列中元素的结构和前面单链表中的结点的结构一样。为了操作方便,在队头元素前附加一个头结点,队头指针就指向头结点。 【思考问题】 1. 栈的顺序存储和链表存储的差异, 答:栈的顺序存储有‘后进先出’的特点,最后进栈的元素必须最先出来,进出栈是有序的,在对编某些需要按顺序操作的程序有很大的作用。

实验报告(栈和队列)

附录A 实验报告 课程:数据结构(c语言)实验名称:栈和队列 系别:数字媒体技术实验日期: 11月15号 专业班级:组别: 姓名:学号: 实验报告内容 验证性实验 一、预习准备: 实验目的: 1. 掌握栈的顺序表示、链表表示以及相应操作的实现。特别注意栈空和栈满 的条件; 2. 掌握队列的顺序表示、链表表示以及相应操作的实现。特别是循环队列中 队头与队尾指针的变化情况; 实验环境:Widows操作系统、VC6.0 实验原理: 1.定义: 栈:只允许在一端插入和删除的线性表,允许插入和删除的一端称为 栈顶(top),另一端称为栈底(bottom)。 队列: 是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队 头(front),允许插入的一端叫做队尾(rear)。 2.特点: 栈:后进先出(LIFO) 队列:先进先出(FIFO, First In First Out) 9

3. 表示: 栈:(1)栈的数组表示—顺序栈 (2)栈的链接表示—链式栈 队列:(1)队列的顺序存储结构表示——循环队列 (2)队列的链式表示—链队列 实验内容和要求: 分别使用顺序循环队列和堆栈以及链式队列和堆栈编写程序:判断一个字符序列是否是回文。回文是指一个字符序列以中间字符为基准,两边字符完全相同。如:“ABCDEDCBA”。字符串长度小于等于80,用于判断回文的字符串不包括字符串的结束标记符。 基本要求: (1)字符序列可由用户从键盘随意输入; (2)可以连续测试多个字符序列,由用户决定退出测试程序; 算法思想: 判断回文的算法思想是:把字符串中的字符逐个分别存入队列和堆栈中,然后逐个出队列和退栈并比较出队列的数据元素和退栈的数据元素是否相等,若全部相等则该字符序列为回文,否则就不是回文。 基本操作: 回文判断操作主要包括入栈和入队列、退栈和出队列操作。在对堆栈以及队列进行操作之前,必须对队列以及堆栈进行初始化。若使用链式堆栈和链式队列,操作结束后必须销毁链表。 二、实验过程: 程序流程图:

简易计算器栈与队列实验报告

第三组专题二栈与队列实验报告 --------简易计算器 一.(1)问题描述 通过模拟一个简单的计算器来进行+、-、*、/、%、^(乘方)等运算,从键盘上输入一算术表达式(一般为中缀表达式),计算出表达式的值。 (2)基本要求 编写程序,要求可对一实数算术表达式进行简单的数学运算。 可以识别带加减乘除等运算符及括号的中缀表达式。 a. 按照四则运算规则,求表达式的值。一般规则如下: 1)先括号内,再括号外。 2)先乘方,再乘除,后加减。 b. 同级运算从左到右顺序执行。 c.如表达式有误,应给出相应的提示信息。 (3)数据结构与算法分析 解决表达式求值问题的方法之一是:第一步将中缀表达式转换为后缀表达式,第二步按后缀表达式求值。解题时可以结合字符串的相关知识。 (4)测试 4.5+5+6.5*1.06=16.39 二.(1)问题分析: 计算机要计算一个式子,不能像我们一样计算,它需要把表达式由中缀表达式转换成后缀表达式,即逆波兰表达式。 将一般中缀表达式转换为逆波兰表达式有如下转换过程: (1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。 (2)读入一个用中缀表示的简单算术表达式,为方便起见,设该简单算术表达式的右端多加上了优先级最低的特殊符号“=”。 (3)从左至右扫描该算术表达式,从第一个字符开始判断,如果该字符是数字,则分析到该数字串的结束并将该数字串直接输出。 (4)如果不是数字,该字符则是运算符,此时需比较优先关系。 做法如下:将该字符与运算符栈顶的运算符的优先关系相比较。如果,该字符优先关系高于此运算符栈顶的运算符,则将该运算符入栈。倘若不是的话,则将栈顶的运算符从栈中弹出,直到栈顶运算符的优先级低于当前运算符,将该字符入栈。 (5)重复上述操作(3)-(4)直至扫描完整个简单算术表达式,确定所有字符都得到正确处理,我们便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。 (2)问题实现及代码。 1.菜单函数:使用switch函数根据输入的数字选择是否进入计算器

数据结构 队列实验报告

队列实验报告 小组成员:xxxxxxxx日期:xxxxxxxx 一、需求分析(xxx) 1.链队列 1)在本演示程序中,首先要链队列添加一个头结点,并判断队列是否为空,它只允许在表的一端进行插入,而在另一端删除元素,允许插入的一段叫队尾,允许删除的一端则为对头,接着访问队列中所有元素,并输出,输出是每个元素之间用空格来完成。最后销毁队列,释放空间。 2)演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“欢迎来到链队列”“元素入队”“元素出队”“销毁队列”“清空队列”之后。由用户在键盘上输入演示程序中规定的运算命令,相应的运算数据和显示结果显示在其后。 3)程序执行的命令包括: 欢迎来到链队列 1输出队列长度 2元素入队 3元素出队 4销毁队列 5清空队列 6对头元素 7退出链队列 4)测试数据 入队 1 2 3 4 5 分别执行“元素入队”“元素出队”“销毁队列”“清空队列”等操作。 2.顺序队列 1)在本演示程序中,首先要顺序队列添加一个头结点,并判断队列是否为空,它只允许在表的一端进行插入,而在另一端删除元素,允许插入的一段叫队尾,允许删除的一端则为对头,接着访问队列中所有元素,并输出,输出是每个元素之间用空格来完成。 2)演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“欢迎来到链队列”“元素入队”“元素出队”“取得头结点”“输出显示”之后。由用户在键盘上输入演示程序中规定的运算命令,相应的运算数据和显示结果显示在其后。 3)程序执行的命令包括: 欢迎来到顺序队列 1入队 2出队 3判断是否为空 4取得头结点 5输出显示 6退出顺序队列 4)测试数据 入队 1 2 3

数据结构上机实验报告

数据结构上机实验报告 学院:电子工程学院 专业:信息对抗技术 姓名: 学号: 教师:饶鲜 日期:

目录 实验一线性表 ........................................................................................................ - 2 - 一、实验目的.................................................................................................... - 2 - 二、实验代码.................................................................................................... - 2 - 三、实验结果.................................................................................................... - 8 - 四、个人思路.................................................................................................... - 9 - 实验二栈和队列 .................................................................................................... - 9 - 一、实验目的.................................................................................................... - 9 - 二、实验代码.................................................................................................. - 10 - 三、实验结果.................................................................................................. - 15 - 四、个人思路.................................................................................................. - 16 - 实验三数组 .......................................................................................................... - 16 - 一、实验目的.................................................................................................. - 16 - 二、实验代码.................................................................................................. - 16 - 三、实验结果.................................................................................................. - 18 - 四、个人思路.................................................................................................. - 18 - 实验四树 .............................................................................................................. - 18 - 一、实验目的.................................................................................................. - 18 - 二、实验代码.................................................................................................. - 19 - 三、实验结果.................................................................................................. - 24 - 四、个人思路.................................................................................................. - 25 -

实验三队列实验报告

HEFE0 UNIVERSITY 计算机科学与技术系 实验报告 专业名称计算机科学与技术_______ 课程名称数据结构与算法__________ 项目名称实验三队列实验__________ 班级 ______________ 学号 _______________________ 姓名 _____________________ 同组人员无____________________

HEFE0 UNIVERSITY 实验日期________

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

队列的应用实验报告

实验报告( 2016 / 2017 学年第 2 学期) 实验报告

二、实验环境(实验设备) 硬件: 微型计算机 软件: VC++6.0 二、实验内容 #include #include #define MAXQSIZE 100 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef struct { int *base; int front; int rear; }SqQueue; void InitQueue(SqQueue *Q) { Q->front = Q->rear = 0; if (Q->base == NULL) { Q->base = (int*)malloc(sizeof(int)* MAXQSIZE); } } void DesQueue(SqQueue *Q) { free(Q->base); Q->base = NULL; Q->front = Q->rear = 0; } int QueueLength(SqQueue *Q) { if (Q->base == NULL) return ERROR; return (Q->rear - Q->front + MAXQSIZE) % MAXQSIZE; } void display(SqQueue *Q) { int i; if (Q->base == NULL) { printf("\n ERROR "); return; }

for (i = Q->front; i != Q->rear; i++) { i = i % MAXQSIZE; printf("%3d", Q->base[i]); } printf("\n"); } int InQueue(SqQueue *Q, int e) { if (Q->base == NULL) return ERROR; if ((Q->rear + 1) % MAXQSIZE == Q->front) return OVERFLOW; Q->base[Q->rear] = e; Q->rear = (Q->rear + 1) % MAXQSIZE; return OK; } int DeQueue(SqQueue *Q, int m) { int i = 0; if (Q->base == NULL) return ERROR; if (Q->front == Q->rear) return ERROR; while (i != m && Q->front != Q->rear) { printf("\n%dDeleted\n", Q->base[Q->front]); Q->front = (Q->front + 1) % MAXQSIZE; i++; } if (i != m) { printf("\n ERROR "); return ERROR; } return OK; } void main() { int m, n, d, i; SqQueue Q = { 0, 0, 0 }; InitQueue(&Q); printf("请输入要插入的元素个数:"); scanf("%d", &m); printf("要插入的元素:"); for (i = 1; i <= m; i++) { scanf("%d", &n);

实验三队列实验报告.docx

计算机科学与技术系 实验报告 专业名称 计算机科学与技术 ______ 课程名称 数据结构与算法 _________ 项目名称 实验三队列实验 _________ 班 级 ______________ 学 号 _____________________ 姓 名 ____________________ 同组人员 无 __________________ 实验日期 _______ 合肥禽配 HEFEI UNIVERSITY

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

各函数关系如下: Ini tQueue() QueueEmptyO QueueFuI1() Add()Ma in DeIete() display() 3、详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。 (1)循环队列 #defi ne maxle n 10 typedef StrUCt{ int data [maxle n]; int front; in t rear; }SeqQueue; (2)队列基本算法 SeqQUeUe *ln itQueue(SeqQueue *q) // 建立一个空循环队列 { q=(SeqQueue *)malloc(sizeof (SeqQueue)); q->fro nt=0; q->rear=0; return q; } int QueueFull (SeqQUeUe *q){ // 判断队列是否为满 if (q->fron t==(q->rear+1)%maxle n) return 1; else return 0; }

1710718124-沈瑞祥-实验3-2

《数据结构》实验报告 实验序号:5 实验项目名称:队列的操作

附源程序清单:#include #include void main() { char i; int n=0;

QElemType j = 0; SqQueue S; InitQueue(S); printf("元素入队列,回车结束\n"); while((i=getchar())!='\n') { EnQueue(S,i); n++; } printf("元素出队列\n"); for(i=0 ; i #include #define ERROR 1 #define OK 0 #define OVERFLOW 1 typedef int QElemType; typedef int Status; #define MAXQSIZE 5 static int tag=1; static int k=0; typedef struct { QElemType *base; int front; int rear; }SqQueue; Status InitQueue (SqQueue &Q) { Q.base = (QElemType *) malloc (MAXQSIZE *sizeof (QElemType)); if (!Q.base) exit (OVERFLOW); Q.front = Q.rear = 0; return OK; } Status EnQueue (SqQueue &Q, QElemType e) {

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

实验编号: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.顺序储存: ?代码部分: //Main.cpp: #include"SStack.h" int main() { SqStack S; SElemType e;

int elect=1; InitStack(S); cout << "已经创建一个存放字符型的栈" << endl; while (elect) { Muse(); cin >> elect; cout << endl; switch (elect) { case 1: cout << "input data:"; cin >> e; Push(S, e); break; case 2: if(Pop(S, e)) {cout << e <<" is pop"<< endl; } else{cout<<"blank"<

相关主题
文本预览
相关文档 最新文档