栈与队列
线性结构两种常见的应用之一- – -- – -栈
定义:一种可以实现“先进后出”的存储结构,类似于箱子
分类:静态栈----顺序表
动态栈—链式
算法:压栈 出栈
应用:函数调用 中断、表达式求值、内存分配、缓存处理、迷宫等
# include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct Node
{
int data;
struct Node* pNext;
}Node,* PNODE;
typedef struct Stack {
PNODE pTop;
PNODE pBottom;
}STACK,* PSTACK;
void init(PSTACK pS) {
pS->pTop = (PNODE)malloc(sizeof(Node));
if (pS->pTop == NULL) {
printf("失败");
exit(-1);
}
else {
pS->pBottom = pS->pTop;
pS->pTop->pNext = NULL;
}
}
void push(PSTACK pS, int val) {
PNODE pNew = (PNODE)malloc(sizeof(Node));
if (pNew == NULL) {
printf("失败");
exit(-1);
}
else
{
pNew->data = val;
pNew->pNext = pS->pTop;
pS->pTop = pNew;
}
}
void traverse(PSTACK pS) {
PNODE p = pS->pTop;
while (p != pS->pBottom) {
printf