堆栈是一个最后出来该数据结构.
栈的基本操作包含:入栈,出栈,初始化栈,清空栈,遍历栈.
C代码例如以下:
#include#define MaxSize 20typedef int ElemType;typedef struct stack{ ElemType Data[MaxSize]; int top;}Stack;//初始化栈void InitStack(Stack *S){ S->top=-1;}//入栈void PushStackValue(Stack *S){ printf("Input the Value of stack member:\n(0-exit)\n"); int value; printf("Please input the 1st value of stack:\n"); scanf("%d",&value); S->Data[++S->top]=value; while(value) { S->top++; printf("Please input the %dst value of stack:\n",S->top+1); scanf("%d",&value); S->Data[S->top]=value; }}//出栈void PopStackValue(Stack *S){ if(S->top>=0) { printf("the stack %dst value pop out: %d\n",S->top+1,S->Data[--S->top]); } else { printf("The Stack is empty\n"); }}//推断栈空void IsEmpty(Stack *S){ if(S->top==-1) { printf("The Stack is empty.\n"); } else { printf("The stack is not empty.\n"); }}//清空栈void ClearStack(Stack *S){ S->top=-1;}//遍历栈void ScanStack(Stack *S){ int i; int len=S->top-1; int StackArray[len]; for(i=len;i>0;i--) { StackArray[i]=S->Data[i--]; } printf("The all stack member(from top to bottom) is:\n"); while(len>=0) { printf("%d ",S->Data[len--]); } printf("\n");}void main(){ Stack S; InitStack(&S); PushStackValue(&S); ScanStack(&S); IsEmpty(&S); PopStackValue(&S); PopStackValue(&S); PopStackValue(&S); PopStackValue(&S);}
执行结果例如以下:
转载请注明:刘
版权声明:本文博客原创文章。博客,未经同意,不得转载。