| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1131 人关注过本帖
标题:关于堆栈的编程题
取消只看楼主 加入收藏
c小牛
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-4-21
收藏
 问题点数:0 回复次数:1 
关于堆栈的编程题

#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>

typedef char elemtype;
typedef struct linknode {
elemtype data;
struct linknode *next;
}listack;
void inistack(listack *&s)
{
s=(listack *)malloc(sizeof(linknode));
s->next=NULL;
}
void clearstack(listack *&s)
{
listack *p;
p=s->next;
free(p);
s->next=NULL;
}
int stacklength(listack *s)
{
int i=0;
listack *p;
p=s;
while(p!=NULL)
{ i++;
p=p->next;
}
printf("\n它的长度是%d.\n",i-1);
}
void stackempty(listack *s)
{
if(s->next==NULL) printf("\n它是一个空栈.\n");
else printf("\n它不是一个空栈.\n");
}

void push(listack *&s)
{
listack *p;
char a;
printf("\n请输入一个字符\n");
scanf("%c",&a);getchar();
p=(listack *)malloc(sizeof(listack));
p->data=a;
p->next=s->next;
s->next=p;
}


void pop(listack *&s)
{
listack *p;
p=s->next;
if(s->next==NULL) printf("\nERROR!!!它是一个空栈.\n"); return;
printf("\n%c",p->data);
s->next=p->next;
free(p);
}
void gettop (listack *s)
{
printf("\n%c",s->next->data);
}

void disptack(listack *s)
{
listack *p;
p=s->next;
while(p!=NULL)
printf("\n%c",p->data);
}
int main(void)
{
int flag=1;
char a;
listack *s;
printf("\n---------------实验2.栈链------------------\n");
printf("你要做什么?请选择:");
printf("\n1.初始化栈链 2.判断栈链S是否为空");
printf("\n3.进栈 4.出栈 ");
printf("\n5.输出栈顶到栈底的元素 6.输出栈链长度 ");
printf("\n7.释放栈链 8.输入其它字符退出\n ");
while(flag)
{
a=getchar();getchar();
printf("\n---------------实验2.栈链------------------\n");
printf("你要做什么?请选择:");
printf("\n1.初始化栈链 2.判断栈链S是否为空");
printf("\n3.进栈 4.出栈 ");
printf("\n5.输出栈顶到栈底的元素 6.输出栈链长度 ");
printf("\n7.释放栈链 8.输入其它字符退出\n ");
switch(a)
{
case '1':inistack(s) ;break;
case '2':stackempty(s); break;
case '3':push(s);break;
case '4':pop(s);break;
case '5':disptack(s);break;
case '6':stacklength(s);break;
case '7':clearstack(s);break;
default:flag=0; break;
}
}
return 0;
}
编译连接都成功了 但是在进栈的时候 就出现问题了 看了好久也没看出是怎么回事 各位帮忙编译看看 小弟感激不尽~~~
(本人用的是dev-c++编译器)

[此贴子已经被作者于2007-6-14 21:06:29编辑过]

搜索更多相关主题的帖子: 堆栈 
2007-06-14 21:04
c小牛
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-4-21
收藏
得分:0 
首先 对----------------只回感兴趣的帖子 表示感谢
1.本人觉得描述问题还不如有心人编译一遍能更节省时间
2.本人大二学生编程学的不好 不够专业 看来楼上够专业 如果楼上能给解答出来 就..... 不过我们的课本上也是这么 写的 那么以楼上看来 什么垃圾课本(数据结构(c语言版)严蔚敏 吴伟民著 清华大学出版社出版)呀 不够专业!!!!
3.本人没有学过什么界面设计 界面难看也是理所当然 还望楼上赐教
4.楼上连*&s 都不知道 看来楼上没有学过c++ 另外 “释放栈链时只是释放了头节点后的第一个节点” 我还不大清楚这样行不行 有待考证 明天我会说明答案~~~~

总之,对楼上的回答还是很感激的..........

我的爱可以化冰岛为玫瑰,那个曾经枕着蓝色风铃寂寞的叹息声入睡的你是否依然深信不疑?
2007-06-14 23:40
快速回复:关于堆栈的编程题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031305 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved