数据结构:
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
操作系统:
由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。
具体操作有:初始化 判断栈满 判断栈空 push pop 读取栈顶
#include<iostream> using namespace std; #define TRUE 1 #define FALSE 0 #define Stack_Size 50 #define StackElementType char /*顺序栈*/ typedef struct { StackElementType elem[Stack_Size]; /*用来存放栈中元素的一维数组*/ int top; /*用来存放栈顶元素的下标,top为-1表示空栈*/ }SeqStack; /*初始化*/ void InitStack(SeqStack *S) { /*构造一个空栈S*/ S->top = -1; } /*判栈空*/ int IsEmpty(SeqStack *S) /*判断栈S为空栈时返回值为真,反之为假*/ { return(S->top==-1?TRUE:FALSE); } /*判栈满*/ int IsFull(SeqStack *S) /*判断栈S为满栈时返回值为真,反之为假*/ { return(S->top==Stack_Size-1?TRUE:FALSE); } int Push(SeqStack *S,StackElementType x) { if(S->top==Stack_Size-1) return(FALSE); /*栈已满*/ S->top++; S->elem[S->top] = x; return(TRUE); } int Pop(SeqStack *S,StackElementType *x) { /* 将栈S的栈顶元素弹出,放到x所指的存储空间中 */ if(S->top == -1) /*栈为空*/ return(FALSE); else { *x = S->elem[S->top]; S->top--; /* 修改栈顶指针 */ return(TRUE); } } /*读栈顶元素。*/ int GetTop(SeqStack *S,StackElementType *x) { /* 读取栈S的栈顶元素,放到x所指的存储空间中,但栈顶指针保持不变 */ if(S->top == -1) /*栈为空*/ return(FALSE); else { *x = S->elem[S->top]; return(TRUE); } } int main() { SeqStack T; InitStack (&T); StackElementType x,y; x='@'; if(Push(&T,x)) cout<<"储存成功!"<<endl; else cout<<"入栈失败!"<<endl; cout<<"目前T.top="<<T.top<<"读取后="<<endl; if(GetTop(&T,&x)) cout<<T.top<<endl; else cout<<"读栈失败!"<<endl; if(Pop(&T,&y)) cout<<y<<endl; else cout<<"出栈失败!"<<endl; return 0; }
原文地址:http://blog.csdn.net/u014492609/article/details/39581851