#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