C链式栈实现

    xiaoxiao2021-03-25  108

    #ifndef _LINKSTACK_HEAD_H #define _LINKSTACK_HEAD_H #include "head.h" typedef struct{ LinkNode *top; int n; }LinkStack; extern LinkStack *create_empty_linkstack(); extern int is_empty_linkstack(LinkStack *head); extern datatype get_top_linkstack(LinkStack *head); extern int push_linkstack(LinkStack *head,datatype data); extern datatype pop_linkstack(LinkStack *head); #endif #include <stdio.h> #include <stdlib.h> #include "linkstack.h" LinkStack *create_empty_linkstack() { LinkStack *head; head = (LinkStack *)malloc(sizeof(LinkStack)); if(head == NULL){ printf("Fail to create empty linkstack!\n"); return NULL; } head->top = NULL; head->n = 0; return head; } int is_empty_linkstack(LinkStack *head) { return head->top == NULL ? 1 : 0; } datatype get_top_linkstack(LinkStack *head) { if(is_empty_linkstack(head)){ printf("The LinkStack is empty!\n"); return -1; } return head->top->data; } int push_linkstack(LinkStack *head,datatype data) { LinkNode *tmp; tmp = (LinkNode *)malloc(sizeof(LinkNode)); if(tmp == NULL){ printf("Fail to push linkstack!\n"); return -1; } tmp->data = data; tmp->next = head->top; head->top = tmp; head->n ++; return 0; } datatype pop_linkstack(LinkStack *head) { LinkNode *tmp; datatype data; if(is_empty_linkstack(head)){ printf("The linkstack is empty!\n"); return -1; } tmp = head->top; head->top = tmp->next; data = tmp->data; free(tmp); head->n --; return data; }
    转载请注明原文地址: https://ju.6miu.com/read-5744.html

    最新回复(0)