数据结构问题 C语言 栈中输数 栈满出栈
发布网友
发布时间:2023-11-18 16:46
我来回答
共1个回答
热心网友
时间:2024-10-14 06:46
输入数字,不用输入回车键程序会自动处理,当栈满的时候程序自动输出栈中的数字,栈的大小可以通过设定MAXSIZE的值来实现,MAXSIZE初始值是9。我已经运行过了,程序没问题,采纳吧。
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 9
typedef int elemtype;
typedef struct
{
elemtype data[MAXSIZE];
int top;
}SeqStack;
/*--------------------初始化栈--------------------*/
SeqStack * InitStack()
{
SeqStack *S;
S=(SeqStack*)malloc(sizeof(SeqStack));
S->top=-1;
//printf("栈初始化成功\n");
return S;
}
/*---------------将数据插入栈中----------------*/
//返回0和1,用来判断插入是否成功。
SeqStack *Push(SeqStack *S)
{
elemtype item;
int i=MAXSIZE;
//printf("输入要插入的数据:\n");
while(i--)
{
item=getch();
printf("%c\n",item);
S->data[++S->top]=item;
}
return S;
}
/*---------------正序输出栈中元素----------------*/
void Pt1(SeqStack *S)
{
int len=0;
printf("正序输出栈中数据:\n");
while(len<=S->top)
{
printf("%c ",S->data[len]);
len++;
}
printf("\n");
}
/*-----------------倒序输出栈中的数据------------------*/
void Pt2(SeqStack *S)
{
int len=S->top;
printf("倒序输出栈中元素:\n");
while(len>=0)
{
printf("%c ",S->data[len]);
len--;
}
printf("\n");
}
int main()
{
SeqStack *S;
char Select;
int StackTop,StackLen;
printf("输入数据,当栈满的时候,程序自动打印栈中数据\n");
S=InitStack();
S=Push(S);
Pt1(S);
Pt2(S);
free(S);
return 0;
}