利用链栈的基本运算,通过输入将字符进栈,然后输出其出栈序列
来源:互联网 发布:label mx 破解软件 编辑:程序博客网 时间:2024/04/18 10:48
头文件:函数的定义
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>typedef char ElemType;typedef struct node{ElemType data;struct node *next;}LStackNode,*LinkStack;void InitStack(LinkStack *top);//将链栈初始化int StackEmpty(LinkStack top);//判断链栈是否为空int GetTop(LinkStack top,ElemType *e);//取栈顶元素int PushStack(LinkStack top,ElemType e);//进栈操作int PopStack(LinkStack top,ElemType *e);//出栈操作int StackLength(LinkStack top);//求表长操作void DestroyStack(LinkStack top);//销毁链表
函数的声明
#include "链式栈.h"void InitStack(LinkStack *top)//将链栈初始化{if((*top = (LinkStack)malloc(sizeof(LStackNode)))== NULL){exit(-1);}(*top)->next = NULL;}int StackEmpty(LinkStack top)//判断链栈是否为空{if(top->next == NULL){return 1;}else{return 0;}}int GetTop(LinkStack top,ElemType *e)//取栈顶元素{LStackNode *p;p = top->next ;if(!p){printf("栈已空!");return 0;}*e = p->data ;return 1;}int PushStack(LinkStack top,ElemType e)//进栈操作{LStackNode *p;if((p = (LinkStack)malloc(sizeof(LStackNode))) == NULL){printf("内存分配失败!");return 0;}p->data = e;p->next = top->next;top->next = p;return 1;}int PopStack(LinkStack top,ElemType *e)//出栈操作{LStackNode *p;p = top->next ;if(!p){printf("栈已空!");return 0;}top->next = p->next ;*e = p->data ;free(p);return 1;}int StackLength(LinkStack top)//求表长操作 {LStackNode *p;int count = 0;p = top;while(p->next != NULL){p = p->next ;count++;}return count;}void DestroyStack(LinkStack top)//销毁链表{LStackNode *p,*q;p = top;while(!p){q = p;p = p->next ;free(q);}}
函数的应用
#include "链式栈.h"//利用链栈的基本运算,通过输入将字符进栈,然后输出其出栈序列int main(void){LinkStack S;ElemType ch[50],e,*p;InitStack(&S);printf("请输入进栈的字符:\n");gets(ch);p = &ch[0];while(*p){PushStack(S,*p);p++;}printf("当前栈顶元素为:");if(GetTop(S,&e) == 0){printf("栈已空!");return 0;}else{printf("%4c\n",e);}printf("当前栈的元素个数是:%d\n",StackLength(S));printf("元素出栈的序列是:");while(!StackEmpty(S)){PopStack(S,&e);printf("%4c",e);}printf("\n");return 0;}
0 0
- 利用链栈的基本运算,通过输入将字符进栈,然后输出其出栈序列
- Train Problem——判断输出序列是否是输入序列的出栈顺序
- 输入一串字符,然后将其颠倒显示出来
- 输入N个数字,然后将其大于0的数无重复的排序输出
- 栈的应用:通过用户输入后缀表达式,利用数据结构栈计算其结果值。
- 3.2 设计一个程序,要求用户输入 5 个字符,然后将这 5 个字符按相反的顺序显示出 来。例如,假设输入 abcde,则输出为 edcba
- 将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出
- 对标准的输入的读取数据进行压缩,然后将其写到标准的输出
- 从终端输入一组数据进行进栈、出栈操作并将其结果打印出来(采用顺序栈的方式)
- 输入10个数,然后将其按从小到大排序出(此代码有错)
- 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。
- 试利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
- 利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
- 编写程序通过栈的方式将任意输入的字符串内容进行逆序输出。
- 给一串数字,输出所有的出栈序列
- 3.7 编写一个程序,以字符形式输入某进制的数字,将其转换为十进制数值并显示出
- 利用栈将输入的十进制数及一些基本的栈操作
- 将十进制整形数转换成二进制,然后通过字符型输出 自己实现的一个简单的例子
- CCPP Blog 目录
- PHP 月份与季度的转化
- 开源许可证 -> 衍生代码
- vim Cheatsheet
- Activity---数据传递
- 利用链栈的基本运算,通过输入将字符进栈,然后输出其出栈序列
- TCP/IP 通信示例
- 利用 Cordova 和 IBM Bluemix Mobile Data 服务构建一个混合移动应用程序
- malloc,calloc,realloc函数
- uva1344/ HDU1052:Tian Ji -- The Horse Racing
- SDNU1292.圣诞老人【动态规划】
- gvim安装中文文档
- 计算两个日期之间的天数
- 学术休假---字符类型个数