1 / 13
文档名称:

数据结构实验二.doc

格式:doc   大小:306KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验二.doc

上传人:neryka98 2017/8/1 文件大小:306 KB

下载得到文件列表

数据结构实验二.doc

文档介绍

文档介绍:实验报告
学院(系)名称:计算机与通信工程学院
姓名
王宏昌
学号
20135628
专业
计算机科学与技术
班级
2班
实验名称
实验二栈与队列应用
课程名称
数据结构
课程代码
实验时间
2016
实验地点
7-220
批改意见
成绩
教师签字:
实验目的
理解栈和队列的逻辑特点;掌握栈和队列基本操作的实现,并能达到在实际问题背景下的灵活运用栈或队列结构解决问题的程度。
实验要求
具体实验题目:(任课教师根据实验大纲自己指定)
每位同学完成下面2个题目:

1)问题描述:将从键盘输入的十进制数转换为N(如二进制、八进制、十六进制)进制数据。
2)要求: 利用顺序栈实现数制转换问题

1)问题描述:从键盘输入一个算术表达式并输出它的结果
2)要求:算术表达式可包含加、减、乘、除、十进制整数和小括号,利用栈实现
实验过程记录(源程序、测试用例、测试结果及心得体会等)

#include<>
#include<>
#define StackInitSize 100
typedef struct
{
int data[StackInitSize];
int top;
}SeqStack;
SeqStack *InitStack()
{
SeqStack *s;
s=(SeqStack * )malloc(sizeof(SeqStack));
if(s!=NULL)
{
s->top=0;
return s;
}
else
{
printf("ERROR! NO SPACE! EXIT!");
exit(0);
}
}
int IsEmpty(SeqStack *s)
{
return (s->top==0)?1:0;
}
void Push(SeqStack *s, int x)
{
if(s->top==StackInitSize-1)
{
printf("FULL! EXIT!");
exit(0);
}
else
{
s->data[s->top]=x;
s->top++;
}
}
SeqStack *convert(int x, int y)
{
SeqStack *s;
s=InitStack();
int a;
while(x!=0)
{
a=x%y;
Push(s,a);
x=x/y;
}
return s;
}
int Pop(SeqStack *s)
{
int t;
if(IsEmpty(s))
{
printf("NULL! EXIT!");
exit(0);
}
else
{
t=s->data[s->top];
s->top--;
return t;
}
}
int TopStack(SeqStack *s) //取栈顶
{
if(IsEmpty(s))
{
printf("NULL! EXIT!");
exit(0);
}
else
return s->data[s->top];
}
void DestroyStack(SeqStack *s)
{
free(s);
printf("Stack Destroed!\n");
}
void Show(SeqStack *s)
{
int t;
if(IsEmpty(s))
{
printf("NULL! EXIT!");
exit(0);
}
else
{
t=s->top-1;
while(t>=0)
{
if(s->data[t]<10)
printf("%d",s->data[t]);
else
{
switch(s->data[t])
{
case 10:
printf("A");
//break;
case 11:
printf("B");
//break;
case 12:
printf("C");
//break;
case 13:
printf("D");
//break;
case 14:
printf("E");
//break;
case 15:
printf("F");
//break;
}
}
t--;
}
prin