1. 程式人生 > >鏈棧的實現

鏈棧的實現

aps log 隨心所欲 class stdlib.h none data type create

  鏈棧即鏈式棧,也就是說我們不用再考慮空間的大小,可隨心所欲的進行數據的插入/刪除了。和順序棧一樣,仍然要保持其stack的特性,只在一端進行插入和刪除,後進先出。

  示例代碼:

技術分享
#ifndef  _LINKSTACK_H
#define _LINKSTACK_H

typedef int ElemType;
typedef int Status;

typedef struct linkStack
{
    ElemType data;
    struct linkStack * top;
}linkStack;

linkStack * CreateStack();
Status MakeEmpty();
int IsEmpty(); Status Push(); Status Pop(); ElemType Top(); #endif
linkstack.h 技術分享
/* linkstack.c */
#include <stdio.h>
#include <stdlib.h>
#include "linkstack.h"

linkStack * CreateStack()
{
    linkStack * S;
    S = (linkStack *)malloc(sizeof(linkStack));
    S -> top = NULL;
    MakeEmpty(S);
    
return S; } Status MakeEmpty(linkStack * S) { if(S == NULL) { return FALSE; } else { while(!IsEmpty(S)) Pop(S); } return TRUE; } int IsEmpty(linkStack * S) { return S -> top == NULL; } Status Push(linkStack * S, ElemType Data) { linkStack
* p; p = (linkStack *)malloc(sizeof(linkStack)); p -> data = Data; p -> top = S -> top; S -> top = p; return TRUE; } Status Pop(linkStack * S) { linkStack * p; if(IsEmpty(S)) return FALSE; p = S -> top; S -> top = S -> top -> top; free(p); return TRUE; } ElemType Top(linkStack * S) { return S -> top -> data; }
LinkStack.c

鏈棧的實現