栈的特性
栈的特性是先进后出,只能在一端进行进栈,出栈,取元操作。这一切都取决于它独特的存储方式,和倒水一样,先倒的水先进入瓶底后倒的水最接近瓶口(忽略水的流动性)
&很重要
我也看了一些视频,发现他们并没有使用&,这可能各有各的方法,但传递参数并且这个参数之后都要用到,那么加个&无疑是划算的可以返回地址
栈的基本操作
输入n 确定进栈个数
依次输入进栈元素
查看栈顶元素
最后自动出栈所有元素
#include<stdio.h>
#include<malloc.h>
#include<stdio.h>
#define maxsize 10
//结构类型
typedef struct {
char data[maxsize];
int top;
}List;
//初始化栈
void InitList(List *&L){
L=(List *)malloc(sizeof(List));
L->top=-1;
}
//进栈
int push(List *&L,char data){
if(L->top==maxsize)
return 0;
else{
L->top++;
L->data[L->top]=data;
}
return 1;
}
//出栈
int pop(List *&L,char &data){
if(L->top==-1)
return 0;
else{
data=L->data[L->top];
L->top--;
}
return 1;
}
//取栈顶元素
int gettop(List *L,char &data){
if(L->top==-1)
return 0;
else{
data=L->data[L->top];
return 1;
}
}
int main(){
List *L;
InitList(L);
char data;char data1,data2;
int n;
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++){
printf("请输入\n");
scanf("%c",&data);
getchar();
//fflush(stdin);
push(L,data);
}
gettop(L,data2);
printf("栈顶元素:%c\n",data2);
while(L->top!=-1){
pop(L,data1);
printf("\n退出%c\n",data1);
}
return 0;
}