/*
** Expression value
** time:2014-10-07-13:53
** author:halfopen
** version:1
*/
#include <stdio.h>
#include <stdlib.h>
#include "LiStack.h"
void InitStack( LiStack *&s)
{ s = (LiStack *)malloc( sizeof(LiStack));
s->next = NULL;
}
void DestroyStack( LiStack *&s)
{ LiStack *p = s,*t;
while(NULL != p)
{ t = p;
free(p);
p = t->next;
}
free(p);
}
bool StackEmpty( LiStack *&s)
{ return (NULL == s->next);
}
void Push( LiStack *&s, ElemType e)
{ LiStack *p = (LiStack *)malloc( sizeof(LiStack));
p->data = e;
p->next = s->next;
s->next = p;
}
bool Pop( LiStack *&s, ElemType &e)
{ LiStack *p = s->next;
if(NULL == p)return false;
e = p->data;
s->next = p->next;
free(p);
return true;
}
bool GetTop( LiStack *s, ElemType &e)
{ if( NULL == s->next)
return false;
e = s->next->data;
return true;
}
void DispStack( LiStack *s)
{ LiStack *p = s->next;
while(NULL != p)
{ printf("%c",p->data);
p = p->next;
}
if(NULL == s->next)puts("Empty");
else puts("");
}
/
void InitStack2( LiStack2 *&s)
{ s = (LiStack2 *)malloc( sizeof(LiStack2));
//s->data = 0.2491124;
s->next = NULL;
}
void DestroyStack2( LiStack2 *&s)
{ LiStack2 *p = s,*t;
while(NULL != p)
{ t = p;
free(p);
p = t->next;
}
free(p);
}
bool StackEmpty2( LiStack2 *&s)
{ return (NULL == s->next);
}
void Push2( LiStack2 *&s, double e)
{ LiStack2 *p = (LiStack2 *)malloc( sizeof(LiStack2));
p->data = e;
p->next = s->next;
s->next = p;
}
bool Pop2( LiStack2 *&s, double &e)
{ LiStack2 *p = s->next;
if(NULL == p){return false;}
e = p->data;
s->next = p->next;
free(p);
return true;
}
bool GetTop2( LiStack2 *s, double &e)
{ if( NULL == s->next)
return false;
e = s->next->data;
return true;
}
void DispStack2( LiStack2 *s)
{ LiStack2 *p = s->next;
while(NULL != p)
{ printf("%lf ",p->data);
p = p->next;
}
if(NULL == s->next)puts("Empty");
else puts("");
}
LiSatck.cpp
最新推荐文章于 2024-09-16 17:46:36 发布