用C语言描述栈,以下是源代码:
#include "stack.h"
Stack CreatStack(void)
{
PtrToNode S = (PtrToNode)malloc(sizeof(Node));
if (S == NULL)
{
printf("Out of space!\r\n");
return NULL;
}
S->Next = NULL;
memset(&(S->Element), 0, sizeof(ElementType));
return S;
}
bool IsEmpty(Stack S)
{
return (S->Next == NULL);
}
bool MakeEmpty(Stack S)
{
while (!IsEmpty(S))
{
Pop(S);
}
return false;
}
bool Push(Stack S, ElementType X)
{
PtrToNode TmpCell;
TmpCell = (PtrToNode)malloc(sizeof(Node));
if (TmpCell == NULL)
{
printf("Out of space!\r\n");
return false;
}
TmpCell->Element = X;
TmpCell->Next = S->Next;
S->Next = TmpCell;
return true;
}
ElementType Top(Stack S)
{
ElementType ret;
memset(&ret, 0, sizeof(ElementType));
if (IsEmpty(S))
{
printf("Empty Stack!\r\n");
return ret;
}
return S->Next->Element;
}