#include<stdio.h>
#include<stdlib.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("error");
exit(0);
}
else {
pS->pBottom = pS->pTop;
pS->pTop->pNext = NULL;
}
}
void push(PSTACK pS, int data) {
PNODE pNew = (PNODE)malloc(sizeof(NODE));
pNew->data = data;
pNew->pNext = pS->pTop;//新节点成为了栈顶
pS->pTop = pNew;//此时栈顶指向了新节点
}
void pop(PSTACK pS) {
if (pS->pTop == pS->pBottom) {
printf("栈为空栈!");
}
else {
PNODE p = pS->pTop;
printf("出栈元素为:%d\n", p->data);
pS->pTop = pS->pTop->pNext;
free(p);
}
}
void clear(PSTACK pS) {
PNODE p = pS->pTop;
PNODE q = p;
while (p != pS->pBottom) {
q = p->pNext;
free(p);
p = q;
}
pS->pTop = pS->pBottom;
}
void traverse(PSTACK pS) {
printf("当前栈元素为:");
PNODE p = pS->pTop;
while (p != pS->pBottom) {
printf("%d ", p->data);
p = p->pNext;
}
printf("\n");
}
int main() {
PSTACK S = (PSTACK)malloc(sizeof(STACK));
init(S);
push(S, 1);
push(S, 2);
push(S, 3);
push(S, 4);
traverse(S);
pop(S);
pop(S);
traverse(S);
return 0;
}
简单的栈结构(C语言)
最新推荐文章于 2023-03-01 20:31:00 发布