链栈基本操作

#include<stdio.h>
#include<stdlib.h>

typedef struct LinkedStackNode{
    int data;
    LinkedStackNode *next;
}LinkedStackNode,*LinkedStack;

int InitLinkedStack(LinkedStack &L){
    L=(LinkedStackNode*)malloc(sizeof(LinkedStackNode));
    L->next=NULL;
    return 1;
}

int DestroyList(LinkedStack &L){
    LinkedStack temp;
    while(L){
        temp=L->next;
        free(temp);
        L=temp;
    }
    return 1;
}

int LinkedStackEmpty(LinkedStack L){
    if(!L->next){
        printf("LinkedStack is Empty\n");
        return 1;
    }
    else{
        printf("LinkedStack isn't Empty\n");
        return 0;
    }
}

int Push(LinkedStack &L,int e){
    LinkedStack temp;
    temp=(LinkedStackNode*)malloc(sizeof(LinkedStackNode));
    temp->data=e;
    temp->next=L->next;
    L->next=temp;
    return 1;
}

int Pop(LinkedStack &L,int &e){
    LinkedStack temp;
    temp=L->next;
    e=temp->data;
    L->next=temp->next;
    free(temp);
    return 1;
}

int GetElem(LinkedStack L,int &e){
    return e=L->next->data;
}

int main() {              //记几个测试代码,可随意修改
    int n,i,e;
    LinkedStackNode *top;
    InitLinkedStack(top);
    LinkedStackEmpty(top);
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        Push(top, i);
    }
    Pop(top,e);
    printf("%d\n",e);
    GetElem(top, e);
    printf("%d\n",e);
    DestroyList(top);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_46200758/article/details/108243848