// Stack.cpp : 定义控制台应用程序的入口点。
//stack 类似于:list 单链表,对栈操作,类似于操作一个单身的链表
#include "stdafx.h"
#include <stdlib.h>
struct stack
{
int data;
int size;
struct stack *next;
};
stack *stack_init()
{
stack *head;
head = (stack*)malloc(sizeof(stack));
head->size = 0;
head->next = NULL;
return head;
}
int *stack_push(stack *list,int data)
{
stack *temp;
stack *pushstack;
temp = list;
if(list->size == 0)
{
list->data = data;
list->next = NULL;
}
else
{
while(temp->next != NULL)
temp = temp->next;
pushstack = (stack *)malloc(sizeof(stack));
pushstack->data = data;
pushstack->next = NULL;
pushstack->size = list->size;
temp->next = pushstack;
}
list->size = list->size + 1;
return 0;
}
void print_stack(stack *list)
{
stack *temp;
temp = list;
while(list->size != 0)
{
printf("stack->data = %d\tsize = %d\n",temp->data,temp->size);
temp = temp->next;
list->size = list->size - 1;
}
}
void free_stack(stack *list)
{
stack *temp;
while(list != NULL)
{
temp = list;
list = list->next;
free(temp);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
stack *list;
list == NULL;
list = stack_init();
stack_push(list,1);
stack_push(list,2);
print_stack(list);
free_stack(list);
return 0;
}