使用連結串列實現棧【C語言版】
阿新 • • 發佈:2019-02-10
#include <stdlio.h> #include <stdlib.h> typedef char StackType; typedef struct Stack{ StackType data; struct Stack* next; }Stack; void LinkStackInit(Stack* stack){//連結串列棧的初始化 if (stack == NULL) return; stack->next = NULL; stack->data = '0'; return; } Stack* LinkStackPush(Stack* stack,StackType value){//入棧,對連結串列進行頭插 if (stack == NULL) return NULL; Stack* new = (Stack*)malloc(sizeof(Stack)); new->data = value; new->next = stack->next; stack->next = new; return stack; } size_t * LinkStackPop(Stack* stack){//出棧 if (stack == NULL) return 0; if (stack->next == NULL) return 0; //free(tmp); Stack* head = stack; while(head->next->next != NULL){ head = head->next; } free(head->next->next); head->next->next = NULL; return 1; } Stack* LinkStackTop(Stack* stack){ if (stack == NULL) return NULL; return stack->next; } int main(){ return 0; }