数据结构之顺序栈的操作(C语言)
2012-03-06 15:34
495 查看
#include <stdlib.h> #include <stdio.h> #include <string.h> #define MAXLEN 50 typedef struct { char name[10]; int age; }DATA; typedef struct stack { DATA date[MAXLEN+1]; int top; }StackType; //栈的初始化 StackType *STInit() { StackType *p; if (p=(StackType *)malloc(sizeof(StackType))) { p->top=0; return p; } return NULL; } //判断栈是否为空 int STIsEmpty(StackType *s) { int t; t=(s->top==0); return t; } //判断栈是否已经满 int STIsFull(StackType *s) { int t; t=(s->top==MAXLEN); return t; } //清空栈 void STClear(StackType *s) { s->top=0; } //释放内存 void STFree(StackType *s) { if(s) free(s); } //进栈 int PushST(StackType *s,DATA data) { if((s->top+1)>MAXLEN) { printf("栈溢出\n"); return 0; } s->date[++s->top]=data; return 1; } //出栈 DATA PopST(StackType *s) { if(s->top==0) { printf("栈为空\n"); exit(0); } return (s->date[s->top--]); } //读取栈顶元素 DATA PeekST(StackType *s) { if(s->top==0) { printf("栈为空\n"); exit(0); } return (s->date[s->top]); } void main() { StackType *s; DATA data,data1; s=STInit(); printf("入站操作:\n"); printf("输入姓名 年龄进行入站操作:\n"); do { scanf("%s%d",&data.name,&data.age); if (strcmp(data.name,"0")==0) { break; } else { PushST(s,data); } } while (1); do { printf("\n出栈,按回车键\t"); getchar(); if (s->top==0) { break; } data1=PopST(s); printf("出战的数据是(%s,%d)\n",data1.name,data1.age); } while (1); STFree(s); }
相关文章推荐
- 数据结构之顺序队列的操作(C语言)
- 数据结构之顺序队列的操作(C语言)
- 数据结构之顺序栈的操作(C语言)
- 数据结构中顺序表的基本操作(纯C语言)
- C语言之数据结构的顺序单链表创建,插入和删除操作
- C语言实现顺序表-数据结构
- 数据结构(3)——顺序栈的基本操作
- [C语言][数据结构]基础的线性表的顺序表示和实现
- 数据结构之C语言实现顺序表(SeqList)无主函数
- C语言 数据结构查找 顺序查找及折半查找
- 数据结构——顺序表及其基本操作
- 数据结构(严蔚敏)C语言实现---线性表的顺序存储
- 七、数据结构基础之顺序串C语言实现
- 【数据结构】顺序栈的基本操作操作---C/C++
- 数据结构之线性表的顺序结构操作2-(删除,插入,查值等)
- 数据结构之顺序表基本操作
- 数据结构-顺序表的基本操作
- 【数据结构】——顺序循环队列的相关操作
- 数据结构——顺序表的基本操作
- 一、数据结构基础之顺序表C语言实现