数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 02:51:38
数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版

数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版

数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
#include
#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define ERROR 0
#define OK 1;
typedef int SElemType;
typedef struct
{
\x09SElemType *base;
\x09SElemType *top;
\x09int stacksize;
}SqStack;
// 初始化
int InitStack(SqStack &S)
{
\x09S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
\x09if(!S.base)
\x09{
\x09\x09printf("!\n");
\x09\x09exit(ERROR);
\x09}
\x09S.top=S.base;
\x09S.stacksize=STACK_INIT_SIZE;
\x09printf("栈初始化完毕!\n");
\x09return OK;
}
// 入栈(插入元素)
int Push(SqStack &S,SElemType e)
{
\x09if(S.top-S.base>=S.stacksize)
\x09{
\x09\x09S.base=(SElemType *)malloc(S.stacksize+STACKINCREMENT*sizeof(SElemType));
\x09\x09if(!S.base)
\x09\x09{
\x09\x09\x09printf("存储分配失败!\n");
\x09\x09\x09exit(ERROR);
\x09\x09}
\x09\x09S.top=S.base+S.stacksize;
\x09\x09S.stacksize=S.stacksize+STACKINCREMENT;
\x09}
\x09*S.top=e;
\x09S.top++;
//\x09printf("入栈成功!\n");
\x09return OK;
}
// 出栈(删除栈顶元素)
int Pop(SqStack &S,SElemType &e)
{
\x09if(S.base==S.top)
\x09{
\x09\x09printf("栈空!\n");
\x09\x09return ERROR;
\x09}
\x09S.top--;
\x09e=*S.top;
\x09printf("出栈成功!\n");
\x09return OK;
}
// 栈顶元素
int GetTop(SqStack S,SElemType &e)
{
\x09if(S.base==S.top)
\x09{
\x09\x09printf("栈空!\n");
\x09\x09return ERROR;
\x09}
\x09e=*(S.top-1);
\x09return OK;
}
// 判断空栈
int Empty_SqStack(SqStack S)
{
\x09if(S.top==S.base)
\x09\x09printf("栈空!\n");
\x09else
\x09\x09printf("栈非空!\n");
\x09return OK;
}
// 置空
int ClearStack(SqStack &S)
{
\x09S.top=S.base;
\x09S.stacksize=STACK_INIT_SIZE;
\x09printf("置空!\n");
\x09return OK;
}
int main()
{
\x09SqStack Ss;
\x09SElemType e;
\x09InitStack(Ss);
\x09Empty_SqStack(Ss);
\x09printf("Input S_elem:(0结束)\n");
\x09scanf("%d",&e);
\x09while(e!=0)
\x09{
\x09\x09Push(Ss,e);
\x09\x09printf("Input S_elem:(0结束)\n");
\x09 scanf("%d",&e);
\x09}
\x09Empty_SqStack(Ss);
//\x09ClearStack(Ss);
//\x09Empty_SqStack(Ss);
\x09while(Ss.base!=Ss.top)
\x09{
\x09\x09GetTop(Ss,e);
\x09\x09printf("e=%d\n",e);
\x09\x09Pop(Ss,e);
\x09}
\x09Empty_SqStack(Ss);
\x09return 0;
}

数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版 数据结构的入栈与出栈程序题 定义一个栈抽象类型,将数字序列(1,2,3)进行入堆栈操作,最后将这些数字进行出栈操作帮个忙,解决下代码写全,能够运行和并有main测试函数 设计一个类,其中包含一个栈,并能完成如下操作:1对栈初始化,2入栈,3出栈,4统计栈元素个数,5计录5.记录对栈的操作类型和操作次数 求高手用栈的操作实现”括号匹配检验“这个程序,用数据结构的知识.谢谢啦! 数据结构的抽象操作的定义与具体实现有关吗 建立顺序存储的栈,并对之进行入栈、出栈、取栈顶元素操作的c语言算法 (数据结构类)若数列1,2,3,4,5,6顺序进栈,依此类推,能否得到出栈序列325641?(数据结构类)若数列1,2,3,4,5,6顺序进栈,假设p代表入栈操作,s代表出栈操作,例如:操作序列pspspspspsps,可得到出栈序列为12 马踏棋盘的算法是数据结构的C语言版,用栈和队列来实现. 定义一个栈,将5个整数依次入栈,然后依次弹出栈顶元素直至栈为空,并输出出栈元素. 数据结构 设计算法实现一个10行10列的对称矩阵的压缩和解压缩,并要求打印出对应的内容. 出栈序列统计栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你已经知道栈的操作有两种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出.现在 设计一个数据结构(C语言版),实现多项式的操作具体模式如下:1) 通过键盘输入或者文件输入模式接受多项式,并识别出相关的多项式;2) 建立多项式;3) 根据x的取值,求出多项式的值;4 一个栈的入栈序列是1,2,3,4,5,操作时随时进随时出,则栈的不可能输出序列是43512,说明原因 数据结构实验 线性表的基本操作:括号配对检查.输入一个只有左括号“(”和右括号“)”的序列,程序对括号配对的正确性检查并给出结果,配对检查的算法中用到栈结构 结构说明:栈结 数据结构的一道题设栈 S和队列Q的初始状态为空,元素 a b c d e f g依次进栈 S .若每个元素出站后立即进去入队列Q ,且7个元素出队顺序是b d c f e a g则栈 S的容量至少多少?这是数据结构的题. c++定义一个集合类,怎样用操作符重载实现交集并集运算 若依次输入数据元素序{a,b,c,d,e,f,g}进栈,出栈操作可以和入栈操作间隔进行,刚下列哪个无素序列可以由出栈序列得到?()A.{d,e,c,f,b,g,a} B.{f,e,g,d,a,c,b} C.{e,f,d,g,b,c,a} D.{c,d,b,e,g,a,f}一个栈的入栈序列