- 0
- 0
- 约1.55千字
- 约 4页
- 2021-01-08 发布于天津
- 举报
/*
*时间: 2010-10-14 14:36:07
*/
#includestdio.h
#includemalloc.h
#includestdlib.h
#define size_num 4
/* 结构体 */
typedef struct STACK
{
unsigned data; struct STACK *next;
}stack;
/* 添加数据 */
Push_element(stack *head,int n)
{
stack *s;
/*注意, s 必须是指针型,才可以申请内存 */ s=(stack *)malloc(sizeof(stack));
s-next=NULL;
s-data=n;
s-next=head-next;
head-next=s;
}
/* 返回数据,并释放节点 */
stack get_element(stack *head,stack s)
{
stack *middle=NULL;
middle=head-next;
s.data=middle-data; head-next=middle-next;
/* 内存释放,否则造成内存泄露 */ free(middle);
return s;
/* 浏览栈中元素 */
void browse_stack(stack *head)
{
stack *middle=NULL;
middle=head-next;
while(middle!=NULL)
{
printf(middle-data is %d\n,middle-data);
middle=middle-next;
}
}
/*以上即是栈的 3 个模块,下面我们运用上面 3个模块进行进栈,出栈,浏览栈中元素的实 验*/
main()
{
int num=0;
stack *head=NULL;
stack s;
s.data=NULL;
s.next=NULL;
/* 添加数据 进栈 */
printf( 进栈 ...);
for(num=0;numsize_num;num++)
{
Push_element(head,num);
printf(num is %d\n,num);
}
system(pause);/* 暂停 */
/* 浏览节点 */
printf( 浏览节点 ...);
browse_stack(head);
system(pause);/* 暂停 */
/* 返回数据,同时释放内存 出栈 */
printf( 出栈 ...);
while((head-next)!=NULL)
{
s=get_eleme nt(head,s); prin tf(s.data is %d\n,s.data);
}
system(pause); /* 暂停 */
}
导读:
这里面的head节点的指向是不断变化的,他总是指向最后一个元素。我们可以称它为寻栈 入口,注意,不要将head-data数据可以为栈中元素的个数,只是,我在程序里面没有实现 这个模块功能
这里面的元素是后来指向前面的,与我们的队列中的指向不同(队列中是前面指向后面) 所以,第一个进栈元素的指向只能为 NULL
stack 水head
NULL
head-neKt=NULL
刚开始的时候,系统自动给 head分配空间。我们将其初始化,所以要检测栈是否为空,只
要检测head-〉next是否为NULL
对于操作
s-data=n;
s-n ext=head-n ext; head-n ext=s;
的解读
耦麟时我
鱷-个逬栈元
您可能关注的文档
最近下载
- 八年级数学勾股定理的应用题型梳理与讲解(完整版).pdf VIP
- 2025年云南省高考生物真题试卷及答案.docx VIP
- 党的建设与意识形态等知识测试试卷及答案要点.doc VIP
- 年产1亿片盐酸二甲双胍片车间工艺设计.docx VIP
- 夯土墙(仿古土墙)专项施工方案.docx VIP
- 预期发展结果概况(drdp–2015).pdf
- 2025年互联网营销师用户召回中的用户参与度(Engagement)指标体系专题试卷及解析.pdf VIP
- 八年级下册数学勾股定理典型题型梳理与例题讲解.docx VIP
- 学士学位论文—基于plc的船舶主机遥控系统的设计.doc VIP
- 2024国家核安保技术中心社会招聘8人笔试备考试题及答案解析.docx VIP
原创力文档

文档评论(0)