/*BiTree_TaskStack.h */
int InitStack(LinkTaskStack &head){
head=(LinkTaskStack)malloc(sizeof(TNode));
if(!head)
exit(-1);
head->next = NULL;
return TRUE;
}
int StackEmpty(LinkTaskStack head){
if(head->next == NULL) return TRUE;
return FALSE;
}
int Push(LinkTaskStack head, TaskNode element){
LinkTaskStack newp;
newp = (LinkTaskStack)malloc(sizeof(TNode));
if(newp == NULL) return FALSE;
newp->data=element;
newp->next = head->next;
head->next = newp;
return TRUE;
}
int Pop(LinkTaskStack head, TaskNode &element){
if(StackEmpty(head)) return FALSE;
LinkTaskStack newp = head->next;
element = newp->data;
head->next = newp->next;
free(newp);
return TRUE;
}
int GetTop(LinkTaskStack head, TaskNode &element){
if(head->next!=NULL)
{
element = head->next->data;
return TRUE;
}
//element='#';
return FALSE;
}
int StackLength(LinkTaskStack head)
{
LinkTaskStack p;
int i=0;
p=head->next;
while(p)
{
i++;
p=p->next;
}
return i;
}
Status ClearStack(LinkTaskStack &S)
{
LinkTaskStack p;
while(S->next)
{
p=S->next;
S->next=S->next->next;
delete p;
}
return TRUE;
}
Status DestroyStack(LinkTaskStack &head)
{
if(!ClearStack(head))
return false;
delete head;
return TRUE;
}
int InitStack(LinkTaskStack &head){
head=(LinkTaskStack)malloc(sizeof(TNode));
if(!head)
exit(-1);
head->next = NULL;
return TRUE;
}
int StackEmpty(LinkTaskStack head){
if(head->next == NULL) return TRUE;
return FALSE;
}
int Push(LinkTaskStack head, TaskNode element){
LinkTaskStack newp;
newp = (LinkTaskStack)malloc(sizeof(TNode));
if(newp == NULL) return FALSE;
newp->data=element;
newp->next = head->next;
head->next = newp;
return TRUE;
}
int Pop(LinkTaskStack head, TaskNode &element){
if(StackEmpty(head)) return FALSE;
LinkTaskStack newp = head->next;
element = newp->data;
head->next = newp->next;
free(newp);
return TRUE;
}
int GetTop(LinkTaskStack head, TaskNode &element){
if(head->next!=NULL)
{
element = head->next->data;
return TRUE;
}
//element='#';
return FALSE;
}
int StackLength(LinkTaskStack head)
{
LinkTaskStack p;
int i=0;
p=head->next;
while(p)
{
i++;
p=p->next;
}
return i;
}
Status ClearStack(LinkTaskStack &S)
{
LinkTaskStack p;
while(S->next)
{
p=S->next;
S->next=S->next->next;
delete p;
}
return TRUE;
}
Status DestroyStack(LinkTaskStack &head)
{
if(!ClearStack(head))
return false;
delete head;
return TRUE;
}