作者在 2008-11-09 08:55:38 发布以下内容
(一)采用的数据描述为:栈采用顺序结构
#define STACKSIZE 100
typedef struct{int *base;
int *top;
int stacksize;
}Sqstack;
1.初始化
Sqstack init(Sqstack S)
{S.base=(int)malloc(sizeof(int));
if(!S.base) printf("OVERFLOW");
S.top=S.base;
stacksize=STACKSIZE;
return S;}
2.入栈
Sqstack push(Sqstack S,int x)/*栈S中,插入新元素使其成为栈顶元素*/
{if(S.top-S.base>=STACKSIZE) printf("OVERFLOW");
*S.top++=x;
return S;}
3.出栈
Sqstack pop(Sqstack S,int e)/*栈S中,删除元素*/
{if(S.top==S.base) printf("ERROR");
e=*--S.top;
return S;}
(二)采用的数据描述为:栈采用链式结构
#define STACKSIZE 100
typedef struct SNOODE{int data;
struct SNODE *next;
}*Linkstack,SNODE;
1.入栈
Linkstack push(Linkstack S,int x)/*栈S中,插入新元素使其成为栈顶元素*/
{p=(linklsit)malloc(sizeof(SNODE));
if(!p) printf("OVERFLOW");
P->data=x;p->next=s; s=p;
return S;}
2.出栈
Linkstack pop(Linkstack S)/*栈S中,删除元素*/
{if(!S) printf("ERROR");
p=s;s=p->next;
free(p);
return S;}
#define STACKSIZE 100
typedef struct{int *base;
int *top;
int stacksize;
}Sqstack;
1.初始化
Sqstack init(Sqstack S)
{S.base=(int)malloc(sizeof(int));
if(!S.base) printf("OVERFLOW");
S.top=S.base;
stacksize=STACKSIZE;
return S;}
2.入栈
Sqstack push(Sqstack S,int x)/*栈S中,插入新元素使其成为栈顶元素*/
{if(S.top-S.base>=STACKSIZE) printf("OVERFLOW");
*S.top++=x;
return S;}
3.出栈
Sqstack pop(Sqstack S,int e)/*栈S中,删除元素*/
{if(S.top==S.base) printf("ERROR");
e=*--S.top;
return S;}
(二)采用的数据描述为:栈采用链式结构
#define STACKSIZE 100
typedef struct SNOODE{int data;
struct SNODE *next;
}*Linkstack,SNODE;
1.入栈
Linkstack push(Linkstack S,int x)/*栈S中,插入新元素使其成为栈顶元素*/
{p=(linklsit)malloc(sizeof(SNODE));
if(!p) printf("OVERFLOW");
P->data=x;p->next=s; s=p;
return S;}
2.出栈
Linkstack pop(Linkstack S)/*栈S中,删除元素*/
{if(!S) printf("ERROR");
p=s;s=p->next;
free(p);
return S;}