typedef struct _stack
{
ElemType data;
struct _stack* next;
}Stack , *PStack;
const int nLEN = sizeof(Stack);
void InitStack(PStack* head)
{
(*head) = (PStack)malloc(nLEN);
// (*head)->data = NULL;
(*head)->next = 0;
}
void DestroyStack(PStack *head)
{
PStack p = *head;
PStack p1 = p;
while(p)
{
p = p->next;
free(p1);
p1 = p;
}
}
void CleadStack(PStack *head)
{
PStack p = (*head)->next;
PStack p1 = p;
while(p)
{
p = p->next;
free(p1);
p1 = p;
}
}
int StackEmpty(PStack s)
{
s = s->next;
if(s!=NULL)
return FALSE;
else return TRUE;
}
int StackLength(PStack s)
{
s = s->next;
int nSize = 0;
while(s!=NULL)
{
nSize++;
s = s->next;
}
return nSize;
}
int GetTop(PStack s,ElemType *data)
{
if(!StackEmpty(s))
{
s = s->next;
*data = s->data;
return TRUE;
}
return FALSE;
}
int Push(PStack s,ElemType data)
{
PStack temp = (PStack)malloc(nLEN);
temp->data = data;
temp->next = NULL;
//
temp->next = s->next;
s->next = temp;
return TRUE;
}
int Pop(PStack s,ElemType *data)
{
if(StackEmpty(s))
return FALSE;
PStack temp = s->next;
*data = temp->data;
s->next = s->next->next;
free(temp);
return TRUE;
}
栈
最新推荐文章于 2024-01-03 11:28:32 发布