链栈

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

enum
{
    FALSE,
    TRUE
};

typedef int dataType;

typedef struct node
{
    dataType data;
    struct node *next;
}node;

typedef struct linkStack
{
    node *top;
}linkStack;


void initLinkStack(linkStack *s)
{
    s->top=NULL;
}

int push(linkStack *s,int numberOfPushInStack)
{
    node *temp=malloc(sizeof(node));
    if (temp==NULL) {
        return FALSE;
    }
    temp->data=numberOfPushInStack;
    temp->next=s->top;
    s->top=temp;
    return TRUE;
}

int pop(linkStack *s , int *numberOfPopInStack)
{
    if (s->top==NULL) {
        return FALSE;
    }
    *numberOfPopInStack=s->top->data;
    s->top=s->top->next;
    
    return TRUE;
}
int main(void)
{
    
    //加入判断机制主要是为了容错机制,程序开发后期的维护要比前期的开发更费力,一个好的容错机制,可以帮助减少后期的维护费用
    linkStack s;
    int temp;
    initLinkStack(&s);
    for (int i=0; i<8; i++)
    {
        if(push(&s, i+1)==FALSE)
        {
            printf("空间申请失败,数据无法存入栈中");
        }
    }
    
    while (pop(&s, &temp)!=FALSE)
    {
        printf("%d",temp);
    }
    if (s.top==NULL) {
        printf("\n已到达栈底部");
    }
    printf("\n");
    return 0;
}


你可能感兴趣的:(链栈)