数据结构实验 栈与队列
2、实验内容(1)实现顺序栈的基本操作(初始化、判断栈空、判断栈满、入栈、出栈),并利用栈实现十进制转换为其它进制(二、八、十六)。(2)实现循环队列的基本操作(初始化、...
2、实验内容
(1)实现顺序栈的基本操作(初始化、判断栈空、判断栈满、入栈、出栈),并利用栈实现十进制转换为其它进制(二、八、十六)。
(2)实现循环队列的基本操作(初始化、判断队空、判断队满、入队、出队),并利用循环队列输出杨辉三角。
哪位高手帮帮忙啊 急用! 展开
(1)实现顺序栈的基本操作(初始化、判断栈空、判断栈满、入栈、出栈),并利用栈实现十进制转换为其它进制(二、八、十六)。
(2)实现循环队列的基本操作(初始化、判断队空、判断队满、入队、出队),并利用循环队列输出杨辉三角。
哪位高手帮帮忙啊 急用! 展开
1个回答
展开全部
我实现第一题吧.栈空栈满很简单,就不用写了.(栈空判断条件是s.top!=s.base
栈满条件是s.top-s.base<s.stacksize)
#include<iostream>
#include<malloc.h>
#define N 2 //可以控制进制转换
using namespace std;
typedef struct{
int *top;
int *base;
int stacksize;
}stack;
int initstack(stack &s)
{
s.base =(int *)malloc(100*sizeof(int));
s.top =s.base ;
s.stacksize =100;
return 1;
}
int push(stack &s,int e)
{
*s.top =e;
s.top ++;
return 1;
}
int pop(stack &s,int &e)
{
s.top --;
e=*s.top ;
return 1;
}
int getelem(stack s)
{
int e=0;
while(s.base !=s.top )
{
pop(s,e);
cout<<e<<" ";
}
return 1;
}
int creatstack(stack &s)
{
float e=0,m=1;
cout<<"输入0表示结束栈的初始化"<<endl;
while(m!=0)//输入0表示结束栈的初始化
{
cin>>e;
if(e!=0)
push(s,e);
m=e;
}
return 1;
}
int convert() //利用栈转化进制函数
{
int n,m=1,e=0;
stack s;
initstack(s);
cout<<endl<<"输入你要转化的数,0表示结束"<<endl;
while(m)
{
cin>>n;
m=n;
if(n!=0)
{
while(n)
{
push(s,n%N);
n=n/N;
}
while(s.top !=s.base )
{
pop(s,e);
cout<<e;
}
cout<<endl;
}
}
return 1;
}
void main()
{
stack s;
initstack(s);
creatstack(s);
getelem(s);
convert();
}
栈满条件是s.top-s.base<s.stacksize)
#include<iostream>
#include<malloc.h>
#define N 2 //可以控制进制转换
using namespace std;
typedef struct{
int *top;
int *base;
int stacksize;
}stack;
int initstack(stack &s)
{
s.base =(int *)malloc(100*sizeof(int));
s.top =s.base ;
s.stacksize =100;
return 1;
}
int push(stack &s,int e)
{
*s.top =e;
s.top ++;
return 1;
}
int pop(stack &s,int &e)
{
s.top --;
e=*s.top ;
return 1;
}
int getelem(stack s)
{
int e=0;
while(s.base !=s.top )
{
pop(s,e);
cout<<e<<" ";
}
return 1;
}
int creatstack(stack &s)
{
float e=0,m=1;
cout<<"输入0表示结束栈的初始化"<<endl;
while(m!=0)//输入0表示结束栈的初始化
{
cin>>e;
if(e!=0)
push(s,e);
m=e;
}
return 1;
}
int convert() //利用栈转化进制函数
{
int n,m=1,e=0;
stack s;
initstack(s);
cout<<endl<<"输入你要转化的数,0表示结束"<<endl;
while(m)
{
cin>>n;
m=n;
if(n!=0)
{
while(n)
{
push(s,n%N);
n=n/N;
}
while(s.top !=s.base )
{
pop(s,e);
cout<<e;
}
cout<<endl;
}
}
return 1;
}
void main()
{
stack s;
initstack(s);
creatstack(s);
getelem(s);
convert();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询