#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int data;
struct Node* next;
}Node;
Node* init_stack()
{
Node* Stack = (Node*)malloc(sizeof(Node));
Stack->data = 0;
Stack->next = NULL;
return Stack;
}
int push(Node* Stack,int data)
{
if(Stack == NULL) return -1;
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = Stack->next;
Stack->next = node;
Stack->data++;
return 0;
}
int pop(Node* Stack)
{
if(Stack == NULL || Stack->next == NULL) return -1;
Node* newtop = Stack->next->next;
Node* oldtop = Stack->next;
int ret_data = oldtop->data;
free(oldtop);
Stack->data--;
Stack->next = newtop;
return ret_data;
}
void printf_stack(Node* Stack)
{
Node* head = Stack;
head = head->next;
while(head != NULL)
{
printf("%d\n",head->data);
head = head->next;
}
}
int main(int argc, char const *argv[])
{
Node* Stack = init_stack();
push(Stack,1);
push(Stack,2);
push(Stack,3);
push(Stack,4);
push(Stack,5);
int pop1 = pop(Stack);
int pop2 = pop(Stack);
printf("%d %d\n",pop1,pop2);
printf_stack(Stack);
return 0;
}
使用链表实现栈
最新推荐文章于 2024-07-25 17:45:03 发布