链表存入字符串值报错。

链表存入字符串值报错。

问题描述:

有大佬知道为什么这里报错吗?

完整代码如下 第32行报错



 

#include<stdio.h>
typedef int bool;
#define true 1
#define false 0
bool backspaceCompare(char* s, char* t);
int main()
{
    char s[4],t[4];
    scanf("%s", s);
    scanf("%s", t);
    int a = backspaceCompare(s,  t);
    if (a == 1)
        printf("true");
    else
        printf("false");
    return 0;

}

bool backspaceCompare(char* s, char* t) {
    typedef struct Lnode {
        char data;
        struct Lnode* next;
    } *stack;
    stack L1 = NULL;
    stack L2 = NULL;
    stack temp = NULL;
    int i = 0;
    while (s) {
        if (s[i] != '#') {
            stack p1 = (stack)malloc(sizeof(struct Lnode));
            p1->data = s[i];
            p1->next = L1;
            L1 = p1;
            i++;
        }
        else if (!L1) {
            temp = L1;
            L1 = L1->next;
            free(temp);
        }
        s++;
    }
    i = 0;
    while (t) {
        if (t[i] != '#') {
            stack p2 = (stack)malloc(sizeof(struct Lnode));
            p2->data = t[i];
            p2->next = L1;
            L2 = p2;
            t++;
        }
        else if (!L2) {
            temp = L2;
            L2 = L2->next;
            free(temp);
        }
        t++;
    }
    if (L1 == NULL && L2 == NULL)
        return true;
    int flag = 1;
    while (flag) {
        if (L1->data == L2->data) {
            L1 = L1->next;
            L2 = L2->next;
            if (L1 == NULL && L2 == NULL)
                flag = 0;
        }
        else
            break;
    }
    if (!flag)
        return true;
    else  
        return false;
}

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

你定义链表数据项是char 类型,只能保存一个字符

写的力扣这题,看了题解,我这方法太蠢了,不过还是想知道为什么会报错

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。

 

示例 1:

输入:S = "ab#c", T = "ad#c"
输出:true
解释:S 和 T 都会变成 “ac”。
示例 2:

输入:S = "ab##", T = "c#d#"
输出:true
解释:S 和 T 都会变成 “”。
示例 3:

输入:S = "a##c", T = "#a#c"
输出:true
解释:S 和 T 都会变成 “c”。
示例 4:

输入:S = "a#c", T = "b"
输出:false
解释:S 会变成 “c”,但 T 仍然是 “b”。
 

提示:

1 <= S.length <= 200
1 <= T.length <= 200
S 和 T 只含有小写字母以及字符 '#'。
 

进阶:

你可以用 O(N) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/backspace-string-compare
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。