C语言入栈出栈操作的程序,希望有人为我解答
1个回答
展开全部
您好:
你是在学习数据结构方面的知识吧。
首先呢,你学习栈,要了解栈的定义,明白它是怎么一回事,就是去理解他的思想。
最后才去用代码来体现出来。
栈是先进后出,其实是用代码控制的,
其实你要他先进先出也可以。
你只要明白他的原理就行。
代码,你可以理解为跟计算的一种对话的语言。
不用想的那么复杂。
就好比说话,你只要知道你要说什么就行(算法),而不用刻意明白要怎么说(语法)。
下面给我出我以前写的代码,关于栈的,顺序栈,其实还有链栈。
/* 数据结构-栈 */
/* 异常的细节处理还没弄好*/
#include <iostream>
#include <stdlib.h>
#include <malloc.h>
#define len_chu_shi 50 //初始空间大小
#define len_zeng_jia 10 //额外增加空间大小
#define OK 0 //正确
#define OVER -2 //
#define ERROR -1 //
using namespace std;
typedef int elem_type; //元素类型
typedef int function_type; //函数类型
typedef struct zhan
{
elem_type *top; //栈顶
elem_type *base; //栈底
int len; //当前空间大小
}zhan; //栈结构
function_type Init_zhan(zhan *exam);//初始化栈
function_type Get_top(zhan *exam,elem_type *e);//获取栈顶元素
function_type Add_top(zhan *exam,elem_type *e);//增加栈顶元素
function_type Delete_top(zhan *exam, elem_type *e);//删除栈顶元素
int main(int argc,char *argv[])
{
zhan *example = (zhan *)malloc(sizeof(zhan));
Init_zhan(example);
return OK;
}
function_type Init_zhan(zhan *exam)
{
exam->base = (elem_type *)malloc(len_chu_shi*sizeof(elem_type));
if(!exam->base) //分配失败
exit(OVER);
exam->top = exam->base;
exam->len = len_chu_shi;
return OK;
}//--end
function_type Get_top(zhan *exam,elem_type *e)
{
if(!exam->base)
exit(OVER);
*e = *(exam->top - 1); //不能用自减运算符,那样会改变栈顶指针的值
return OK;
}//--end
function_type Add_top(zhan *exam,elem_type *e)
{
if(exam->len <= exam->top - exam->base) //我个人觉得,如果 已经"<",就已经数据溢出了,就应该报错
exam->base = (elem_type *)realloc(exam->base,(exam->len + len_zeng_jia)*sizeof(elem_type));
if(!exam->base) //分配失败
exit(OVER);
*(exam->top++) = *e; //应该是先改变栈顶指针的内容,然后栈顶指针再自增
exam->len += len_zeng_jia;
return OK;
}//--end
function_type Delete_top(zhan *exam, elem_type *e)
{
if(!exam->base) //空栈
exit(OVER);
*e = *(--exam->top); //应该是栈顶指针先自减,然后获取栈顶指针的内容
return OK;
}//--end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询