链栈的输入与输出
来源:互联网 发布:linux新增硬盘分区命令 编辑:程序博客网 时间:2024/06/14 18:50
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef int SElemType;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 20
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef struct LinkNode{
SElemType data;
LinkNode * next;
}*LiStack;//定义一个数据节点
void InitStack(LiStack &S)
{
S=(LiStack )malloc(sizeof (LiStack));
S->next=NULL;
}//初始化栈
/*
int stackempty(LiStack &S)
{
if(S->next=NULL)
return OK;
}//判断栈是否为空
*/
void ElemTyPush(LiStack &S,SElemType e)
{
LiStack p;
p=(LiStack )malloc(sizeof(LiStack));
p->data=e;
p->next=S->next;
S->next=p;
}//进栈就是逆序建的,正好符合栈的特点
int output(LiStack &S,SElemType &e)
{
LiStack p;
p=S->next;
e=p->data;
S=S->next;
return e;
}//输出栈中的元素
int topdata(LiStack &S,SElemType &e)
{
LiStack p;
p=S->next;
e=p->data;
return e;
}
int main()
{
LiStack S;
int e,i,j,k;
InitStack(S);
printf("输入栈中元素的个数:\n");
scanf("%d",&i);
printf("输入栈中元素的值:\n");
for(i;i>0;i--)
{
scanf("%d",&e);
ElemTyPush(S,e);
}
k=topdata(S,e);
printf("栈顶元素为:%d\n",k);
printf("栈中的元素为:\n");
while(S->next!=NULL)
{
j=output(S,e);
printf("%d\n",j);
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef int SElemType;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 20
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef struct LinkNode{
SElemType data;
LinkNode * next;
}*LiStack;//定义一个数据节点
void InitStack(LiStack &S)
{
S=(LiStack )malloc(sizeof (LiStack));
S->next=NULL;
}//初始化栈
/*
int stackempty(LiStack &S)
{
if(S->next=NULL)
return OK;
}//判断栈是否为空
*/
void ElemTyPush(LiStack &S,SElemType e)
{
LiStack p;
p=(LiStack )malloc(sizeof(LiStack));
p->data=e;
p->next=S->next;
S->next=p;
}//进栈就是逆序建的,正好符合栈的特点
int output(LiStack &S,SElemType &e)
{
LiStack p;
p=S->next;
e=p->data;
S=S->next;
return e;
}//输出栈中的元素
int topdata(LiStack &S,SElemType &e)
{
LiStack p;
p=S->next;
e=p->data;
return e;
}
int main()
{
LiStack S;
int e,i,j,k;
InitStack(S);
printf("输入栈中元素的个数:\n");
scanf("%d",&i);
printf("输入栈中元素的值:\n");
for(i;i>0;i--)
{
scanf("%d",&e);
ElemTyPush(S,e);
}
k=topdata(S,e);
printf("栈顶元素为:%d\n",k);
printf("栈中的元素为:\n");
while(S->next!=NULL)
{
j=output(S,e);
printf("%d\n",j);
}
return 0;
}
阅读全文
0 0
- 链栈的输入与输出
- “【】”的输入与输出
- 顺序栈的输入与输出
- 链表的输入与输出
- 链队列的输入与输出
- shell的输入与输出
- Linux_shell_shell的输入与输出
- 数据的输入与输出
- java 的输入与输出
- 文件的输入与输出
- io的输入与输出
- 数据的输入与输出
- avCaptureDevice 的输入与输出
- 函数的输入与输出
- shell的输入与输出
- 字符串的输入与输出
- 文件的输入与输出
- 格式的输入与输出
- 解析机器学习中的几种常见聚类算法
- 通过launch文件中参数设置先锋移动速度
- 认识HTML标签
- 面向对象程序设计第一周编程题(翁恺老师)
- js获取手机屏幕宽度
- 链栈的输入与输出
- Zabbix的使用(一)---安装
- ADV-181 质因数2
- 寻找三角形
- HDU 5638 Toposort 拓扑排序 优先队列
- Unity技术支持团队性能优化经验分享
- 计算机视觉中,目前有哪些经典的目标跟踪算法?
- 文件的下载
- POJ 3162 浅谈尺取法区间问题运用及多源树上路径统计