数据结构----栈的操作
2014-09-08 10:42
162 查看
栈的内容感觉比起链表要容易,因为它涉及到内存的操作不如链表那样抽象:
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define MAX 10 typedef struct stack { int elem[MAX]; int top; }stack; stack * stack_init()//栈初始化 { stack *S; S=(stack*)malloc(sizeof(stack)); if(S) { S->top=-1; printf("空栈成功\n"); return S; } else { return NULL; } } int Empty_stack(stack *S) { if(S->top==-1) { return 1; } else { return 0; } } int push_stack(stack *S) { int n; if(S->top==MAX-1) { printf("栈是满的\n"); return 0; } else { printf("请输入你要插入的元素的个数:\n"); scanf("%d",&n); printf("请依次输入你要插入的元素:\n"); while(S->top<n-1) { S->top++; scanf("%d",&S->elem[S->top]); } printf("插入元素成功:\n"); return 1; } } int Pop_stack(stack *S,int *tem) { if(Empty_stack(S)) { printf("栈是空的:\n"); } else { *tem=S->elem[S->top]; S->top--; return 1; } } int gettop_stack(stack *S,int *tem) { if(Empty_stack(S)) { printf("栈是空的:\n"); return 0; } else { *tem=S->elem[S->top]; return 1; } } void Print_stack(stack *S) { int i=S->top; for(;i>=0;i--) { printf("%d",S->elem[i]); } printf("\n"); } void main() { int select,data,k,k1; stack*s; printf(" \n"); printf("------------------------\n"); printf(" 1.栈的初始化\n"); printf(" 2.数据入栈\n "); printf(" 3.数据出栈\n"); printf(" 4.取栈顶元素.\n"); printf(" 5.取出栈中的元素\n"); printf(" 6.退出\n"); printf("------------------------\n"); scanf("%d",&select); while(select) { switch(select) { case 1:s=stack_init();break; case 2:push_stack(s);break; case 3:k=Pop_stack(s,&data); if(k)printf("出栈的元素是:%d\n",data);break; case 4:k1=gettop_stack(s,&data); if(k1)printf("当前栈顶的元素是:%d",data);break; case 5:Print_stack(s);break; case 6:exit(0); default:printf("error \n"); } printf("请选择相应选项:\n"); scanf("%d",&select); } }
相关文章推荐
- 数据结构类型定义及基本操作汇总(二)-- 二叉树及其遍历
- 数据结构:线性表删除操作的php和js实现
- 图的相关操作【C++数据结构】
- 数据结构--栈的操作
- 【数据结构】二叉树基本操作的程序实现
- 数据结构之线性结构的一些操作总结
- 数据结构 链表的基本操作
- 数据结构大多数的操作
- 链表的相关操作查找插入删除(c++ 数据结构)
- Linux内核中关于数据结构操作的一个问题
- ucLinux内核常用数据结构和操作
- bo2-31.cpp 一个数组只生成一个静态链表(数据结构由c2-3.h定义)的基本操作(11个))
- C语言数据结构中队列的相关操作
- Linux内核常用数据结构和操作
- linux字符设备驱动程序相关的数据结构及操作
- 数据结构:字符串的堆分配存储结构,基本操作实现和测试。
- 模拟人工操作Micaps1.0的C++类源代码(头文件及数据结构定义文件)
- 数据结构作业多链表操作之寻找公共节点。
- 数据结构:链表的简单操作
- 数据结构之链表与数组(二) -单向链表上的简单操作问题