首页 / C语言 / 栈的顺序表示和实现(C语言)
栈的顺序表示和实现(C语言)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了栈的顺序表示和实现(C语言),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2476字,纯文字阅读大概需要4分钟。
内容图文
![栈的顺序表示和实现(C语言)](/upload/InfoBanner/zyjiaocheng/1149/4c64a5268df340769d7e9b1f56a1bb9d.jpg)
#include <stdio.h> #include <stdlib.h> constint MAXSIZE = 100; #define OK 1; #define ERROR 0; #define OVERFLOW 0; #define TURE 1; #define FALSE 0; typedef int Status; typedef char SElemType; //栈型数据 //顺序栈定义 typedef struct { SElemType *base; //栈顶指针 SElemType *top; //栈底指针int stacksize; //顺序栈可用最大容量 } SqStack; //顺序栈
//顺序栈初始化 Status InitStack(SqStack *stack){ stack->base=(SElemType*)malloc(sizeof(SElemType)*MAXSIZE); //分配空间 if(!stack->base) return OVERFLOW; //分配失败 stack->top=stack->base; //初始时让栈顶指针等于栈底指针 stack->stacksize=MAXSIZE; //栈最大容量 return OK; } //判断顺序栈是否为空Status StackIsEmpty(SqStack stack) { if(stack.top==stack.base){ //栈为空的条件:栈顶==栈底 return TURE; } else { return FALSE; } } //求顺序栈长度 int StackLength(SqStack stack) { if(!stack.base){ return0; } return stack.top-stack.base; } //顺序栈清空 Status ClearStack(SqStack *stack) { if(!stack->base){ //栈不存在 return ERROR; } else { stack->top=stack->base; return OK; } } //顺序栈销毁 Status DestroyStack(SqStack *stack) { if(!stack->base){ //栈不存在 return ERROR; } else { free(stack->base); stack->stacksize=0; //stack->base=stack->top=NULL; stack->base=NULL; stack->top=NULL; return OK; } } //元素进入顺序栈 Status Push(SqStack *stack,SElemType elem) { if(stack->top-stack->base==stack->stacksize){ return ERROR; //栈满 } else { *(stack->top)=elem; (stack->top)++; return OK; } } //顺序栈的出栈操作 Status Pop(SqStack *stack,SElemType *elem){ if(stack->top==stack->base) { return ERROR; //下溢 } else { (stack->top)--; *elem = *(stack->top); //取出栈顶元素放入elemreturn OK; } } int main(void){ SqStack stack1; //初始化 Status initStackResult = InitStack(&stack1); printf("栈stack1初始化结果码:%d\n",initStackResult); //是否为空 Status stackIsEmpty = StackIsEmpty(stack1); printf("栈stack1为空?:%d\n",stackIsEmpty); //清空栈 Status clearStackResult = ClearStack(&stack1); printf("栈清空结果:%d\n",clearStackResult); //销毁栈/* Status destroyStackResult = DestroyStack(&stack1); printf("栈销毁结果:%d\n",destroyStackResult); *///元素入栈 SElemType elem1=‘Y‘,elem2=‘C‘; Status pushResult = Push(&stack1,elem1); printf("入栈执行结果:%d\n",pushResult); Push(&stack1,elem2); //将elem2也入栈 printf("栈顶元素值:%c\n",*(stack1.top-1)); //元素出栈 SElemType elem3; //下面取出的数据放入elem3 Status popResult = Pop(&stack1,&elem3); printf("出栈执行结果:%d\n",popResult); printf("出栈元素值:%c\n",elem3); printf("栈顶元素值:%c\n",*(stack1.top-1)); printf("\nEND"); return0; }
原文:https://www.cnblogs.com/petitepluie/p/14587914.html
内容总结
以上是互联网集市为您收集整理的栈的顺序表示和实现(C语言)全部内容,希望文章能够帮你解决栈的顺序表示和实现(C语言)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。