栈也是用来存储逻辑关系为一对一数据的线性存储结构。
不同于队列的是:栈只能从表的一端存储数据,另一端封闭,所以栈遵循先进后出的原则,你可以想象为一个弹夹,弹夹下方的子弹先压入,但先射出的是弹夹上方的子弹,即后压入的子弹。
方法如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int n;
struct node* pnext;
}stack;
void push(stack** pptop, int n)//进栈
{
stack* ptemp = malloc(sizeof(stack));
ptemp->n = n;
ptemp->pnext = *pptop;
*pptop = ptemp;
}
int pop(stack** pptop)//出栈
{
if (*pptop != NULL)
{
stack* pdel = *pptop;
*pptop = (*pptop)->pnext;
int n = pdel->n;
free(pdel);
pdel = NULL;
return n;
}
return -1;
}
int main()
{
stack* ptop = NULL;
push(&ptop, 1);
push(&ptop, 2);
push(&ptop, 3);
printf("%d\n", pop(&ptop));
printf("%d\n", pop(&ptop));
printf("%d\n", pop(&ptop));
//输出321
return 0;
}