#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
struct Node* createList()
{
struct Node* headNode = (struct Node *)malloc(sizeof(struct Node));
headNode->next = NULL;
return headNode;
}
struct Node* createNode(int data)
{
struct Node* newNode = (struct Node *)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void insertNode_head(struct Node* headNode, int data)
{
struct Node* newNode = createNode(data);
newNode->next = headNode->next;
headNode->next = newNode;
}
void deleteNode_head(struct Node* headNode)
{
struct Node* deleteNode = headNode->next;
headNode->next = deleteNode->next;
free(deleteNode);
deleteNode = NULL;
}
void printList(struct Node* headNode)
{
struct Node* t = headNode->next;
while(t)
{
printf("%d", t->data);
t = t->next;
}
printf("\n");
}
struct stack {
int stackSize;
struct Node* stackTop;
};
struct stack* createStack()
{
struct stack* newStack = (struct stack *)malloc(sizeof(struct stack));
newStack->stackSize = 0;
newStack->stackTop = createList();
return newStack;
}
int top(struct stack* newStack)
{
if(newStack->stackSize == 0)
return -1;
else
return newStack->stackTop->next->data;
}
int empty(struct stack* newStack)
{
if(newStack->stackSize == 0)
return -1;
else
return 0;
}
void push(struct stack* newStack, int data)
{
insertNode_head(newStack->stackTop, data);
newStack->stackSize++;
}
void pop(struct stack* newStack)
{
if(newStack->stackSize == 0)
{
return;
}
else
{
deleteNode_head(newStack->stackTop);
newStack->stackSize--;
}
}
int main()
{
struct stack* newStack = createStack();
push(newStack, 1);
push(newStack, 2);
push(newStack, 3);
while(!empty(newStack))
{
printf("%d", top(newStack));
pop(newStack);
}
printf("\n");
return 0;
}
链式栈C语言
最新推荐文章于 2024-06-05 16:55:53 发布