栈的链表简易实现

栈的特点:后入先出,只能从栈顶往栈底一个一个压,取的时候也只能从栈顶一个一个取出来;

下面是简易的实现:

#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#define NODE_SIZE sizeof(struct Node)
typedef int Number;
typedef struct Node * Stack;
struct Node{
   Number data;
   Stack next;
};
Stack distribute()
{
    Stack sta = (Stack)malloc(NODE_SIZE);
    if(sta == NULL)
    {
        printf("资源分配失败!");
        exit(-1);
    }
    return sta;
}
Stack init()
{
    Stack s = distribute();
    s->data = -1;
    s->next=NULL;
    return s;
}
void push(Stack sta,Number num)
{
  Stack s = distribute();
  s->next=sta;
  s->data=num;
  sta = s;
}
Number pop(Stack sta)  //取出栈顶的值
{
if(sta->next!=NULL)
{ Stack s
= sta->next; sta->next=sta->next->next; return s->data;
}
printf("栈为空"); exit(-1);
} Number
get(Stack sta) //查看栈顶元素的值 不取出 { if(sta->next!=NULL){ return sta->next->data; } printf("栈为空"); exit(-1); } void print(Stack sta) { sta=sta->next; while(sta->next != NULL){ printf("%d ",sta->data); sta = sta->next; } } void main() { Stack sta = init(); push(sta,1); push(sta,3); print(sta); }

 

posted @ 2017-10-19 21:28  Geek.w  阅读(1248)  评论(0编辑  收藏  举报