顺序栈操作的实验代码(C语言)

        在做栈的习题,顺手把顺序栈的操作总结实现了一下,也算很好的复习了一下结构体,结构体指针,过程中还好好的体会了一把调试的“乐趣”。

        开始的时侯卡在用不用指针上了,最后发现C语言不用指针实在是太不方便了,指针写上,哗哗的,如涛涛江水连绵不绝。

/*
实现栈的全体操作
	于六安碧桂园中午蒸了个不太成功的鸡蛋之后
									 20031722@qq.com 
															 */
#include "stdio.h"
#define MAXSIZE    50
#define TRUE       1
#define FALSE      0

typedef int bool;       //Cpp中这一行要取消掉,他内置bool型 
typedef int Status;    //函数类型,其值是函数结果状态码
typedef int ElemType;  //数据类型 


typedef struct stack
{
	ElemType Data[MAXSIZE];
	int top;
}SqStack;


void InitStack(SqStack *s)//初始化栈 
{
	 s->top=-1;
}

bool StackEmpty(SqStack *s)//判栈空 
{
	if(s->top==-1)
		return TRUE;
	else
		return FALSE;
}

bool Push(SqStack *s,ElemType e)//压栈 
{
	if(s->top==MAXSIZE-1)
	    {
    	printf("Stack is Full\n");   	
		return FALSE;
	    }
	    s->Data[++(s->top)]=e;//先移指针再入数 
	    return TRUE;
}
bool  Pop(SqStack *s,ElemType *e)//出栈 
{
	if(s->top==-1)
	    {
    	printf("Stack is Empty\n");   	
		return FALSE;
	    }
		*e=s->Data[(s->top)--];//先取数再减指针 
		return TRUE;
}

bool GetTop(SqStack *s,ElemType *e)//取栈顶元素 
{
	if(s->top==-1)
		return FALSE;
	*e=s->Data[s->top];
	return TRUE;
}

int main()
{
	SqStack FS,*FSPtr;
	FSPtr=&FS;
	ElemType a=1,b=2,c=3;
	ElemType *x;			//用来返回弹出或取出的元素 
	int i;



    InitStack(FSPtr);
    printf("%s\n",StackEmpty(FSPtr)==TRUE?"Stack is Empty":"Stack is not Empty");
    Push(FSPtr,a);
    printf("%s\n",StackEmpty(FSPtr)==TRUE?"Stack is Empty":"Stack is not Empty");
    Push(FSPtr,b);
    Push(FSPtr,c);
    for(i=0;i<50;i++)  //顺序压0-49数字入栈 
    {
    	    Push(FSPtr,i);
   	        printf("Push data %d into stack \n",i);
    }
	Pop(FSPtr,x);
	printf("Pop data is %d\n",*x);
    GetTop(FSPtr,x);
	printf("GetTop data is %d\n",*x);
   for(i=0;i<20;i++)  //顺序弹出 
    {
    	    Pop(FSPtr,x);
    	    	printf("Pop data is %d\n",*x);
    }
	
	printf("The Stack is:\n");
	
	for(i=FSPtr->top;i>-1;i--) //输出全栈 
{
	printf("%d	",FSPtr->Data[i]);
}	
getchar();
return 0;
}

实际运行效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G00dChina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值