#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* pnext;
}NODE, * PNODE;
typedef struct stack {
PNODE PBottom;
PNODE PStop;
}STACK, * PSTACK;
void inti(PSTACK ps);//初始化栈
void push(PSTACK ps, int val);//压栈
void travers(PSTACK ps);//遍历
int pop(PSTACK ps);//出栈
int empty(PSTACK ps);//判断是否为空
void inti(PSTACK ps) {
ps->PStop = (PNODE)malloc(sizeof(NODE));
ps->PBottom = ps->PStop;
ps->PStop = NULL;
}
void push(PSTACK ps, int val)
{
PNODE pnew = (PNODE)malloc(sizeof(NODE));
pnew->data = val;
pnew->pnext = ps->PStop;
ps->PStop = pnew;
}
void travers(PSTACK ps) {
PNODE P = ps->PStop;
while (P != ps->PBottom && P!=NULL) {
printf("%d ", P->data);
P = P->pnext;
}
printf("\n");
return;
}
int pop(PSTACK ps, int* temp) {
if (empty(ps))
{
return 0;
}
else
{
PNODE r = ps->PStop;
*temp = r->data;
ps->PStop = r->pnext;
free(r);
r = NULL;
return 1;
}
}
int empty(PSTACK ps)
{
if (ps->PStop == ps->PBottom)
{
return 1;
}
else
{
return 0;
}
}
int main(int argc, char* argv[])
{
int val;
STACK ps;
inti(&ps);
push(&ps, 10);
push(&ps, 20);
push(&ps, 30);
travers(&ps);
if (pop(&ps, &val))
{
printf("出栈成功,出栈的元素是%d\n", val);
}
else
{
printf("出栈失败!");
}
travers(&ps);
return 0;
}
C语言实现栈底层增删改查
最新推荐文章于 2022-02-24 20:13:21 发布