天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

堆栈的链表实现

Posted on 2012-09-17 15:41 hoshelly 阅读(301) 评论(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;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理