数据结构与算法分析——栈

来源:互联网 发布:wkwebview 加载本地js 编辑:程序博客网 时间:2024/06/05 08:05


代码实现如下
Stack.h

#ifndef _Stack_Hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode Stack;typedef int ElementType;int IsEmpty(Stack S);Stack CreateStack(void);void Push(ElementType X, Stack S);void Pop(Stack S);ElementType Top(Stack S);#endif

Stack.c

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include "Stack.h"struct Node{    ElementType Element;    PtrToNode Next;};void FatalError(const char *Str){    printf("%s\n",(*Str));    exit(-1);}int IsEmpty(Stack S){    return S->Next == NULL;}/* Create a empty Stack */Stack CreateStack(void){    Stack S;    S = malloc(sizeof(struct Node));    if(S == NULL)        FatalError("Out of space!!!\n");    S->Next = NULL;    return S;}/* Push X into Stack S*/void Push(ElementType X, Stack S){    PtrToNode TmpCell;    TmpCell = malloc(sizeof(struct Node));    if(TmpCell == NULL)        FatalError("Out of space!!!\n");    else    {        TmpCell->Element = X;        TmpCell->Next = S->Next;        S->Next = TmpCell;    }}ElementType Top(Stack S){    if(!IsEmpty(S))        return S->Next->Element;    printf("IsEmpty Stack");    return 0;}void Pop(Stack S){    PtrToNode FirstCell;    if(IsEmpty(S))        printf("Empty Stack\n");    else    {        FirstCell = S->Next;        S->Next = FirstCell->Next;        free(FirstCell);    }}
0 0