- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构书中源程序3.1-3.4
3.1
#includestdio.h
#includestdlib.h
#define MAXSIZE 10
typedef struct
{ int datas[MAXSIZE];
int top;
}SqStack;
void InitStack(SqStack *s)
{ s-top=-1;
}//InitStack
int EmptyStack(SqStack *s)
{ //若栈空返回1;否则返回0。
if (s-top==-1) return 1;
else return 0;
}//EmptyStack
void Push(SqStack *s, int e)
{ //若栈满返回0;否则将e入栈,并返回1。
if(s-top==MAXSIZE-1)
{ printf(Overflow\n); }
else
{ s-top++;
s-datas[s-top]=e;
}
}//Push
int Pop(SqStack *s)
{// 若栈空则返回NULL;否则返回栈顶元素,栈顶指示器递减。
int e;
if (EmptyStack(s))
{ printf(Underflow\n);
return(0);
}
else
{ e=s-datas[s-top];
s-top--;
return e;
}
}//Pop
main()
{
SqStack *s;
int i,e;
s=(SqStack *)malloc(sizeof(SqStack));
InitStack(s);
printf(请按题目要求输入5个整数:);
for(i=0;i5;i++)
{
scanf(%d,e);
Push(s,e);
}
printf(栈中所有元素出栈的序列为:);
while(!(EmptyStack(s)))
{
e=Pop(s);
printf(%4d,e);
}
printf(\n);
}
/*
程序运行结果:
请按题目要求输入5个整数:1 3 6 9 10
栈中所有元素出栈的序列为: 10 9 6 3 1
Press any key to continue
*/
3.2
#includestdio.h
#includestdlib.h
typedef struct SNode
{ int data; //数据元素的类型为整型
struct SNode *next;
}SNode;
SNode * InitStack(SNode *top)
{ top=NULL;
return(top);
}//InitStack
int EmptyStack(SNode *top)
{ //若栈空返回1;否则返回0。
if (top==NULL) return 1;
else
return 0;
}//EmptyStack
SNode * PushStack(SNode *top, int e)
{ //在链栈的栈顶插入一个值为e的结点
SNode *t;
t=(SNode *)malloc(sizeof(SNode));
t-data=e;
t-next=top;
top=t;
return top;
}//PushStack
SNode * PopStack(SNode *top)
{ //将链栈的栈顶元素删除
SNode *t;
if(top==NULL) //空栈
{
printf(Underflow\n); //下溢
return 0;
}
else
{
t=top;
top=top-next;
free(t);
return top;
}
}//PopStack
int GetTop(SNode *top)//数据元素的类型为整型
{// 若栈空则返回0;否则返回栈顶元素,栈顶指示器不变。
int e;
if (EmptyStack(top))
{ printf(Stack is empty.\n);
return(0);
}
else
{ e=top-data;
return e;
}
}//GetTop
void PRINT(SNode *top)
{
int e;
while(top!=NULL)
{ e=top-data;
printf(%4d,e);
top=top-next;
}
}
原创力文档


文档评论(0)