网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月01日漏签0天
c语言吧 关注:801,944贴子:4,377,177
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 3回复贴,共1页
<<返回c语言吧
>0< 加载中...

单向链表问题

  • 取消只看楼主
  • 收藏

  • 回复
  • 黑緢灬
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用单链表模拟的堆栈……也许挫了点
这是结构体
struct letter_{
char save;
struct letter_ *last_ptr;
};
typedef struct letter_ stack;
//为新节点分配内存并把数据扔进去
int AddStack(stack *sptr,char data)
{
stack *temp = NULL;
if((temp=(stack*)malloc(sizeof(stack)))==NULL)
{
puts("Error to deliver space to the new element of the stack.");
return 0;
}
temp->save = data;
temp->last_ptr = sptr;
sptr = temp;
return 1;
}
//检查链表有多少个节点
int CheckStack(stack *sptr)
{
stack *t_sptr = sptr;
int number;
//for这里条件设置得有点复杂……凑合一下吧
for(number = 0;t_sptr->last_ptr!=NULL;number++)
{
#ifdef check
puts("For loop are doing.");
#endif
t_sptr = t_sptr->last_ptr;
}
return number;
}
然后运行时执行CheckStack总是返回0
是Add那里就已经写错了还是Check的判断出现了逻辑错误?
找了2天 木有找到 =。=



  • 黑緢灬
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//再贴一段执行代码……恩 OutStack是出栈函数 由于Check一直为0所以无法执行OutStack
所以那段函数代码就不贴出来了=。=
int main(int argc, char* argv[])
{
stack head = {'\0',NULL};
stack *bottom = &head;
char temp;
puts("Enter the string.");
while((temp=getchar())!=EOF)
{
if(temp=='\0') temp = '.';
AddStack(bottom,temp);
}
printf("Now,the stack has %d letters.\n",CheckStack(bottom));
while(CheckStack(bottom))
{
putchar(OutStack(bottom));
}
return 0;
}


2026-05-01 09:33:12
广告
不感兴趣
开通SVIP免广告
  • 黑緢灬
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
语义问题就表纠结了
貌似是我对结构体指针理解有错误
sptr = temp;
本意是想将sptr指向temp所指的内存位置
……这么做是不可以的嘛?


  • 黑緢灬
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
终于解决了……程序搞定……又学到了不少东西


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示