2023-03-30-链栈LinkStack的实现

//链栈对钩

#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>

typedef struct SNode
{
    int data;
    struct SNode *next;
}SNode,*LinkStack;
//栈的主要操作是在栈顶进行插入和删除,所以将链表的头部看为栈顶最合适
bool initLinkStack(LinkStack *S)//链表初始化,将头指针所在的地址传进来
{
    *S=NULL;//头指针应该指向栈顶,所以初始化赋为NULL
}
void Push(LinkStack *S,int value)//入栈操作
{
    SNode *p;
    p=(SNode *)malloc(sizeof(SNode));
    p->next=*S;
    p->data=value;
    (*S)=p;
}

bool Pop(LinkStack *S,int *e)//出栈操作
{
    if((*S)==NULL)
    {
        return false;
    }
    else
    {
        (*e)=(*S)->data;
        SNode *q;//存储删除的节点来进行释放
        q=*S;
        *S=(*S)->next;
        free(q);
        return true;
    } 
}

int GetTop(LinkStack S)//获取栈顶元素
{
    if(S!=NULL)
    {
        return S->data;
    }
}

int main()
{
    LinkStack S;
    initLinkStack(&S);
    Push(&S,666);
    Push(&S,999);

    int *e;
    int a=0;
    e=&a;//指针初始化

    while(S!=NULL)
    {
        Pop(&S,e);
        printf("%d \n",*e);
    }
    return 0;
}
 

C++:

//链栈

#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>

typedef struct SNode
{
    int data;
    struct SNode *next;
}SNode,*LinkStack;
//栈的主要操作是在栈顶进行插入和删除,所以将链表的头部看为栈顶最合适
bool initLinkStack(LinkStack &S)//链表初始化,将头指针所在的地址传进来
{
    S=NULL;//头指针应该指向栈顶,所以初始化赋为NULL
    return true;
}
void Push(LinkStack &S,int value)//入栈操作
{
    SNode *p;
    p=(SNode *)malloc(sizeof(SNode));
    p->next=S;
    p->data=value;
    S=p;
}

bool Pop(LinkStack &S,int *e)//出栈操作
{
    if(S==NULL)
    {
        return false;
    }
    else
    {
        (*e)=S->data;
        SNode *q;//存储删除的节点来进行释放
        q=S;
        S=S->next;
        free(q);
        return true;
    } 
}

int GetTop(LinkStack S)//获取栈顶元素
{
    if(S!=NULL)
    {
        return S->data;
    }
    return 0;
}

int main()
{
    LinkStack S;
    initLinkStack(S);
    Push(S,666);
    Push(S,999);

    int *e;
    int a=0;
    e=&a;//指针初始化

    while(S!=NULL)
    {
        Pop(S,e);
        printf("%d \n",*e);
    }
    return 0;
}

 

posted @ 2023-03-30 21:14  正方形的被子  阅读(68)  评论(0)    收藏  举报