#include <stdio.h>
#include <stdlib.h>
//栈
typedef struct node {
int nValue;
struct node* pNext;
}node;
typedef struct Stack {
int length;
struct node* pTop;
}Stack;
void InitStack(Stack** stack) {
*stack = (Stack*)malloc(sizeof(Stack));
(*stack)->pTop = NULL;
(*stack)->length = 0;
}
void Push(Stack *stack,int nValue) {
node *pTemp = (node*)malloc(sizeof(node));
pTemp->nValue = nValue;
pTemp->pNext = stack->pTop;
stack->pTop = pTemp;
stack->length++;
}
int Pop(Stack * stack) {
if (stack->pTop == NULL) {
printf("empty.\n");
return 0;
}
node* pDel = stack->pTop;
int nNum = pDel->nValue;
stack->pTop = stack->pTop->pNext;
free(pDel);
pDel = NULL;
stack->length--;
return nNum;
}
int Top(Stack* stack) {
if (stack == NULL) {
printf("empty.\n");
return 0;
}
return stack->pTop->nValue;
}
int Empty(Stack* pTop) {
if (pTop == NULL) {
return 1;
}
else {
return 0;
}
}
int Clear(Stack* stack) {
node* pTemp;
node* pNode = stack->pTop;
while (pNode) {
pTemp = pNode->pNext;
free(pNode);
pNode = pTemp;
}
stack->pTop = NULL;
stack->length = 0;
}
int main()
{
Stack* stack = NULL;
InitStack(&stack);
Push(stack, 0);
Push(stack, 1);
Push(stack, 2);
Push(stack, 3);
Push(stack, 4);
printf("%d\n",Top(stack));
Pop(stack);
printf("%d\n", Top(stack));
Pop(stack);
printf("%d\n", Top(stack));
Pop(stack);
printf("%d\n", Top(stack));
Pop(stack);
printf("%d\n", Top(stack));
Pop(stack);
printf("%d\n", Top(stack));
Pop(stack);
return 0;
}
【数据结构和算法】C语言实现栈
最新推荐文章于 2024-08-05 17:56:32 发布
本文详细介绍了如何使用C语言实现一个栈的数据结构,包括初始化、压入元素(如整数)、弹出元素、获取栈顶值以及检查栈是否为空的操作。
摘要由CSDN通过智能技术生成