数据结构C++求助 栈的操作 站等~
Description对输入整数序列123..执行一组栈操作,输出操作的出栈序列。Input每行是一个测试用例,表示一个操作序列。操作序列由P和Q两个符号组成,P表示入栈...
Description
对输入整数序列1 2 3 ..执行一组栈操作,输出操作的出栈序列。
Input
每行是一个测试用例,表示一个操作序列。操作序列由P和Q两个符号组成,P表示入栈,Q表示出栈。每个操作序列长度不超过1000。
Output
对每个操作序列,输出出栈序列,若操作序列有错误,如栈空时执行出栈操作,输出error。
Sample Input
PQPPQQPPPQPQ
PPPPQQP
PP
PQQPP
PPQQ
Sample Output
1 3 2 6 7
4 3
1 error
2 1
Hint
注意,Sample Input中第三行没有出栈操作,因此输出一个空行。
大哥,还是CE 能不能再帮我改一下……谢谢了 展开
对输入整数序列1 2 3 ..执行一组栈操作,输出操作的出栈序列。
Input
每行是一个测试用例,表示一个操作序列。操作序列由P和Q两个符号组成,P表示入栈,Q表示出栈。每个操作序列长度不超过1000。
Output
对每个操作序列,输出出栈序列,若操作序列有错误,如栈空时执行出栈操作,输出error。
Sample Input
PQPPQQPPPQPQ
PPPPQQP
PP
PQQPP
PPQQ
Sample Output
1 3 2 6 7
4 3
1 error
2 1
Hint
注意,Sample Input中第三行没有出栈操作,因此输出一个空行。
大哥,还是CE 能不能再帮我改一下……谢谢了 展开
展开全部
试下这个看看,希望能AC
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>
#define stack_init_size 1000
typedef struct zhann
{
int *base;
int *top;
}zhan;
int initstack(zhan &s)
{
s.base=(int *)malloc(stack_init_size*sizeof(int));
s.top = s.base;
return 1;
}
// 标准的 push 动作如下
void push( zhan &s, int c)
{
*(++s.top) = c;
}
// 标准的 pop 动作如下
int pop(zhan &s)
{
return *(s.top--);
}
// 标准的 empty 判断如下
bool isEmpty(zhan &s)
{
return s.base == s.top;
}
int main()
{
zhan p;
initstack( p );
char achInput[1000];
while(1)
{
// 输入一行字符串,再对这串逐个解析
scanf( "%s", achInput);
int num = 1;
for ( int i = 0; i < (int)strlen(achInput); i++)
{
if ( achInput[i] == 'P')
{
push( p, num);
num++;
}
else if ( achInput[i] == 'Q')
{
if ( isEmpty( p))
{
printf("error");
break;
}
else
{
printf( "%d ", pop(p));
}
}
}
// 注意,下次循环时要保证 p 为空栈
while ( !isEmpty(p))
{
pop(p);
}
// 注意,要有一个回车
printf( "\n" );
}
return 0;
}
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>
#define stack_init_size 1000
typedef struct zhann
{
int *base;
int *top;
}zhan;
int initstack(zhan &s)
{
s.base=(int *)malloc(stack_init_size*sizeof(int));
s.top = s.base;
return 1;
}
// 标准的 push 动作如下
void push( zhan &s, int c)
{
*(++s.top) = c;
}
// 标准的 pop 动作如下
int pop(zhan &s)
{
return *(s.top--);
}
// 标准的 empty 判断如下
bool isEmpty(zhan &s)
{
return s.base == s.top;
}
int main()
{
zhan p;
initstack( p );
char achInput[1000];
while(1)
{
// 输入一行字符串,再对这串逐个解析
scanf( "%s", achInput);
int num = 1;
for ( int i = 0; i < (int)strlen(achInput); i++)
{
if ( achInput[i] == 'P')
{
push( p, num);
num++;
}
else if ( achInput[i] == 'Q')
{
if ( isEmpty( p))
{
printf("error");
break;
}
else
{
printf( "%d ", pop(p));
}
}
}
// 注意,下次循环时要保证 p 为空栈
while ( !isEmpty(p))
{
pop(p);
}
// 注意,要有一个回车
printf( "\n" );
}
return 0;
}
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询