源代码
typedef struct
{
ElemType stack[MaxStackSize];
int top;
}SequenceStack;
void StackInitiate(SingleLinkedNode **head)
{
if((*head = (SingleLinkedNode *) malloc(sizeof(SingleLinkedNode))) == NULL)
exit(1);
(*head)->next = NULL;
}
int StackPush(SingleLinkedNode *head, ElemType x)
/*将数据元素x入栈 */
{
SingleLinkedNode *p;
if((p = (SingleLinkedNode *)malloc(sizeof(SingleLinkedNode))) == NULL)
{
printf("内存空间不足无法插入! \n");
return 0;
}
p->data = x;
p->next = head->next; /*将p插入到头结点后面*/
head->next = p; /*新结点成为新的栈顶*/
return 1;
}
int StackPop(SingleLinkedNode *head, ElemType *d)
/*获取栈顶数据,删除栈顶*/
{
SingleLinkedNode *p = head->next;
if(p == NULL)
{
printf("堆栈已空出错!");
return 0;
}
head->next = p->next; /*删除原栈顶结点*/
*d = p->data; /*原栈顶结点元素赋予d*/
free(p);
return 1;
}