您的位置:首页 > 编程语言 > C语言/C++

栈的C语言实现源码

2014-08-27 17:09 190 查看
struct Node;
typedef struct Node* pNode;
typedef pNode Stack;

struct Node
{
ElemType elem;
pNode next;
}

int IsEmpyt(Stack s)
{
return (s->next == NULL);
}

Stack CreateStack()
{
Stack s;
if( !(s = (pNode)malloc(sizeof(struct Node))))
{
perror("create error!");
}
else
{
s->next = NULL;
return s;
}
}

void Push(Stack s, ElemType elem)
{
pNode pTmpNode = (pNode) malloc(sizeof(struct Node));
if(pTmpNode == NULL)
{
FatalError("Out of space");
}
else
{
pTmpNode->elem = elem;
pTmpNode->next = s->next;
s->next = pTmpNode;
}
}

int Top(Stack s)
{
if(!IsEmpyt(s))
return s->next->elem;
else
perror("Empty stack");

}

void Pop(Stack s)
{
pNode pFirst;
if(IsEmpyt(s))
perror("Empty stack");
else
{
pFirst = s->next;
s->next = s->next->next;
free(pFirst);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: