栈的链表简易实现


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

下面是简易的实现:

#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); }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM