鱼C论坛

 找回密码
 立即注册
查看: 2261|回复: 1

数据结构的广义表的求助

[复制链接]
发表于 2020-4-12 14:31:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大佬们,我这段代码里面有地方无限递归了,导致栈溢出,但是我又找不到问题在哪里,所以请求一下帮助
  1. int CreateGList(GList& LS, char* K) {
  2.     char* hsub;
  3.     char* M;
  4.     M = (char*)malloc(20 * sizeof(char));
  5.     int LEN = strlen(K);
  6.     SubStr(M, K, 1, LEN);
  7.    
  8.     if ((M == "") || (M == NULL)) {
  9.         LS = NULL;
  10.         return 1;
  11.     }
  12.     else{
  13.         if (!(LS = (GList)malloc(sizeof(GLNode)))) {
  14.             printf("OVERFLOW!");
  15.             return -1;
  16.         }
  17.         if (LEN == 3) {
  18.             LS->tag = ATOM;
  19.             LS->atom =M[0];
  20.             return 1;
  21.         }
  22.         else {
  23.             sever(M, hsub);
  24.             LS->tag = LIST;
  25.             CreateGList(LS->ptr.hp, hsub);
  26.             CreateGList(LS->ptr.tp, M);
  27.             return 1;
  28.         }
  29.     }
  30.    
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-12 14:38:31 | 显示全部楼层
这个是里面的用来切开广义表的最外层括号的()函数,问题出在这里,但是……还是没找到具体的
  1. int SubStr(char*& sub, char* S, int Start, int StrL) {//去括号
  2.     int j;
  3.     for (j = 1; j < Start; S++, j++);//S自增偏移到我们想要开始的地方
  4.     for (j = 0; j < StrL; j++) {
  5.         sub[j] = S[j];
  6.     }
  7.     sub[StrL] = '\0';
  8.     return 1;
  9. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 04:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表