Posted on 2012-09-17 15:41
hoshelly 阅读(300)
评论(0) 编辑 收藏 引用 所属分类:
DS && Algorithm
#include<stdio.h>
#include<stdlib.h>
typedef struct STACKnode* link; //堆栈的链表实现
struct STACKnode
{
int item;
link next;
};
static link head;
link NEW(int item,link next)
{
link x=(link)malloc(sizeof(STACKnode));
x->item = item; //将新建立的结点添加到链表头
x->next = next; //此时head指向新建立的结点,此结点的next结点,即为原先是头结点的结点(旧头结点)
return x; //函数返回新建立的头结点,此结点总是位于栈顶
}
void STACKinit()
{
head = NULL;
}
int STACKempty() //置空栈
{
return head == NULL;
}
void STACKpush(int item)
{
head = NEW(item,head);
}
int STACKpop()
{
int item = head->item; //将头结点上的值取出
link t = head->next;
free(head); //释放此头结点内存
head = t; //head指向新的头结点t
return item; //返回旧的头结点的值
}
int main()
{
int i;
STACKinit();
for(i=1;i<=10;i++)
STACKpush(i);
for(i=1;i<=10;i++)
printf("%d ",STACKpop());
printf("\n");
return 0;
}