棧的鏈表簡易實現


棧的特點:后入先出,只能從棧頂往棧底一個一個壓,取的時候也只能從棧頂一個一個取出來;

下面是簡易的實現:

#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