c语言栈的操作,C语言栈操作

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*包括初始化栈,判断栈是否为空,出栈,入栈,检查栈顶元素,输出栈内元素*/

#include "stdio.h"

#include "stdlib.h"

#define MAX 1024

struct data

{

int data[MAX];

int top;

};

typedef struct data SEQSTACK;

SEQSTACK *init_seqstack(void) /*初始化栈*/

{

SEQSTACK *head;

head=(SEQSTACK *)malloc(sizeof(SEQSTACK));

if(!head)

return NULL;

else

{

head->top=-1;

return head;

}

}

int empty_seqstack(SEQSTACK *head) /*判断栈是否为空*/

{

if(head->top==-1)

return 0;

else

return 1;

}

int push_seqstack(SEQSTACK *head,int num) /*入栈*/

{

if(head->top==MAX-1)

return 1;

else

{

head->top++;

head->data[head->top]=num;

return 0;

}

}

int pop_seqstack(SEQSTACK *head,int *num) /*出栈*/

{

if(!empty_seqstack(head))

return 1;

else

{

*num=head->data[head->top];

head->top--;

return 0;

}

}

int top_seqstack(SEQSTACK *head) /*栈顶元素*/

{

if(!empty_seqstack(head))

return 0;

else

return head->data[head->top];

}

int print_seqstack(SEQSTACK *head) /*输出栈内元素*/

{

if(!empty_seqstack(head))

return 1;

else

{

int i;

printf("当前栈中的元素:");

for(i=head->top;i>=0;i--)

printf("%d ",head->data[i]);

printf("\n");

return 0;

}

}

int main(void)

{

SEQSTACK *head;

int n,i,num;

head=init_seqstack();

printf("初始化完成!\n");

printf("栈空:%d\n",empty_seqstack(head));

printf("请输入入栈元素个数:");

scanf("%d",&n);

printf("请输入%d个要入栈的元素:",n);

for(i=0;i

{

scanf("%d",&num);

push_seqstack(head,num);

}

print_seqstack(head);

printf("栈顶元素:%d\n",top_seqstack(head));

printf("请输入要出栈的元素个数(不能超过%d个):",n);

scanf("%d",&n);

printf("依次出栈的元素:");

for(i=0;i

{

pop_seqstack(head,&num);

printf("%d ",num);

}

printf("\n");

print_seqstack(head);

printf("栈顶元素:%d\n",top_seqstack(head));

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值