数据结构_顺序栈的基本操作_(入栈、出栈、取栈顶元素)

#include
#include
#include

#define Stack_Size 6
#define TRUE 1
#define FALSE 0

typedef struct //定义数据类型
{
char elem[Stack_Size];
int top;
}SeqStack;

//初始化顺序栈
void InitStack(SeqStack *S)
{
S->top=-1; //top指针拉置=-1,压入一个元素后,top指针位置=0; 栈顶位置=栈顶实际位置
}

//栈为空时返回真,否则返回假
int IsEmptyStack(SeqStack *S)
{
return S->top==-1?FALSE:TRUE;
}

//栈是满的返回真,否则返回假
int IsFull(SeqStack *S)
{
return S->top==Stack_Size-1?TRUE:FALSE;
}

//入栈

void Push(SeqStack *S) //进栈 ,将元素压入栈中
{
int i;
char ch;
if(S->top<=Stack_Size-1) //压入栈中的元素不能超过栈的最大存储
{
printf(“输入入栈字符元素:\n”);
for(i=0;i {
scanf(" %c",&ch);
S->top++; //移动栈顶指针
S->elem[S->top]=ch;

    }
}

}

void Output(SeqStack *S)
{
int i;
printf(“打印栈内元素:”);
for(i=0;i<=Stack_Size;i++)
{
printf("%2c",S->elem[i]);
}
}

//pop出栈,出栈元素放在ch中
int pop(SeqStack *S,char *ch)
{
if(S->top==-1)
{
printf(“栈是空的!”);
return FALSE;
}
else
{
*ch=S->elem[S->top];
S->top–;
printf(“Pop出栈元素:%c”,*ch);
return TRUE;
}
}

//取栈顶元素:其实是拷贝
char GetTop(SeqStack *S)
{
if(S->top==-1)
{
printf(“栈是空栈!”);
return FALSE;
}
else
{
return S->elem[S->top];
}
}

//求栈中元素个数
int StackLength(SeqStack *S)
{
return S->top+1;
}

void main()
{
SeqStack S;
char ch;

InitStack(&S);

Push(&S); //元素入栈

Output(&S); //打印顺序栈
printf("\n");

printf("1.栈中元素个数=%d",StackLength(&S));
printf("\n");

//出栈
pop(&S,&ch);
printf("\n");

printf("2.栈中元素个数=%d",StackLength(&S));
printf("\n");

//取栈顶元素
printf("GetTop取栈顶元素:%c",GetTop(&S));
printf("\n");

printf("3.栈中元素个数=%d",StackLength(&S));
printf("\n");

system("pause");

}
运行结果:
数据结构_顺序栈的基本操作_(入栈、出栈、取栈顶元素)_第1张图片

你可能感兴趣的:(C/C++)