栈表:
/**********栈表**********/
#include <stdio.h>
#include <stdlib.h>
typedef struct Mystack{ //栈的数据结构
int data[10];
int top,bottom;
}Stack;
Stack *Stack_Create(void) //创建栈表
{
Stack *list=(Stack *)malloc(sizeof(Stack));
list->bottom=list->top=0; //初试时栈底和栈顶相等
return list;
}
void Stack_Insert(Stack *p) //栈表的插入操作
{
int data,n;
printf("请输入需要插入多少个数:\n");
scanf("%d",&n);
printf("请输入%d个数值:\n",n);
while(n)
{
//p->top++;
scanf("%d",&data);
p->data[p->top]=data;
//printf("%d ",p->data[p->top]);
p->top++; //此后栈顶指向栈表的顶部,注意此刻的顶部是没有元素
n--;
}
printf("\n");
}
int main()
{
Stack *table;
table=Stack_Create();
Stack_Insert(table);
while(table->top!=table->bottom)
{
printf("%d ",table->data[table->top-1]); //注意,这里是top-1;因为在插入操作中,top指向的是栈表的栈顶,而此时的栈顶无数据
//printf("%d ",table->data[table->top]);
table->top--;
}
printf("\n");
return 0;
}
运行结果: