typedef struct stacknode {
elemtype data; //单链表中的数据域
stacknode *next; //单链表的指针域
}stacknode;
typedef struct{
stacknode *top;
int size;
}linkstack;
stacknode *buynode2()
{
stacknode *p = (stacknode *)malloc(sizeof(stacknode));
if (p)
{
memset(p, 0, sizeof(stacknode));
}
else exit(1);
return p;
}
void freenode2(stacknode *s)
{
free(s);
}
void initstack(linkstack&s)
{
s.size = 0;
s.top = buynode2();
}
status destroystack(linkstack&s)
{
freenode2(s.top);
return ok;
}
void ClearStack(LinkStack &s)
{
while(s.top != NULL)
{
StackNode *q = s.top;
s.top = q->next;
Freenode(q);
}
s.size = 0;
}
int getSize2(linkstack &s)
{
return s.size;
}
bool is_impty2(linkstack&s)
{
return s.size == 0;
}
void Push(LinkStack &s,ElemType val)
{
StackNode *sp = Buynode();
sp->data = val;
sp->next = s.top;
s.top = sp;
s.size +=1;
}
bool Pop(linkstack &s, elemtype &e)
{
if (is_impty2(s))
return false;
e = s.top->data;
stacknode*p = s.top;
freenode2(p);
s.size -= 1;
return true;
}
c语言链栈
最新推荐文章于 2022-10-05 17:51:52 发布