鏈式棧-C語言實現

來源:互聯網
上載者:User

標籤:點資料   ack   ++   lse   判斷   status   span   nod   類型   

相對於順序棧的空間有限,鏈式棧的操作則更加靈活

 

#include<stdio.h>#include<malloc.h>typedef int SElemType;                    //元素類型typedef int Status;                        //傳回值類型#define OK 1                            //操作成功#define ERROR 0                            //操作失敗typedef struct StackNode                //鏈棧結點結構體{    SElemType date;                        //節點資料    struct StackNode *next;                //節點指標}*LinkStackPtr;                            //結點名typedef struct LinkStack                //鏈棧結構體{    LinkStackPtr top;                    //棧頂指標    int count;                            //棧結點數量}LinkStack;                                //棧名/*鏈棧的入棧操作*/Status Push(LinkStack *S, SElemType e){    LinkStackPtr s = (LinkStackPtr)malloc(sizeof(StackNode));        //申請新結點    s->date = e;                            //新結點的資料等於e    s->next = S->top;                        //新結點的下一結點等於現在的棧頂結點    S->top = s;                                //棧頂結點等於新結點    S->count++;                                //棧中資料加1    return OK;}/*鏈棧的出棧操作*/Status Pop(LinkStack *S, SElemType *e){    if(S->count == 0)                //判斷棧是否為空白        return ERROR;    LinkStackPtr s = (LinkStackPtr)malloc(sizeof(StackNode));        //申請新結點    s = S->top;                        //新結點等於當前棧頂結點    *e = s->date;                    //e等於棧頂結點的資料    S->top = s->next;                //棧頂等於新結點的下一結點    free(s);                        //釋放新結點    S->count--;                        //棧中資料減1    return OK;}void main(){    LinkStack S;            //建立棧L    S.count = 0;            //棧頂指標為-1,棧為空白    int e;                //入棧與出棧的元素    while(true)    {        printf("請選擇對鏈棧的操作:\n");        printf("1.入棧\n");        printf("2.出棧\n");        printf("3.退出\n");        int a;        scanf("%d", &a);        switch(a)        {            case 1:                printf("請輸入入棧的元素:");                scanf("%d", &e);                if(Push(&S, e))                    printf("入棧成功\n");                else                    printf("入棧失敗\n");                break;            case 2:                if(Pop(&S, &e))                    printf("出棧的元素為:%d\n",e);                else                    printf("棧空\n");                break;            case 3:                return;            default:                printf("選擇錯誤\n");                break;        }    }}

 

鏈式棧-C語言實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.