clion可以运行在dev上不能运行

在clion可以运行在dev上不能运行
题目为
假设有一个带头结点的单链表L,每个结点值由单个数字、小写字母和大写字母构成。设计一个算法将其拆分成3个带头结点的单链表L1、L2和L3,L1包含L中的所有数字结点,L2包含L中的所有小写字母结点,L3包含L中的所有大写字母结点。
clion代码

#include 
using namespace std;

typedef struct LNode{
    char data;
    struct LNode *next;
}LinkNode;

void CreatLink(LinkNode *&L,string a,int n) {
    LinkNode *s;
    L = (LinkNode *) malloc(sizeof(LinkNode));
    L->next = NULL;
    for (int i = 0; i < n; ++i) {
        s = (LinkNode *) malloc(sizeof(LinkNode));
        s->data = a[i];
        s->next=L->next;
        L->next=s;
    }
}

void add(LinkNode *&L,char a){
    LinkNode *s;
    s=(LinkNode *) malloc(sizeof(LinkNode));
    s->data=a;
    s->next=L->next;
    L->next=s;
}

void FenLi(LinkNode *&L,LinkNode*&L1,LinkNode*&L2,LinkNode*&L3){
    LinkNode *p;
    p=L->next;
    L1=(LinkNode*) malloc(sizeof(LinkNode));
    L2=(LinkNode*) malloc(sizeof(LinkNode));
    L3=(LinkNode*) malloc(sizeof(LinkNode));
    while (p!=NULL){
        if ('0'<=p->data and p->data<='9') {
            add(L1, p->data);
        }
        if ('a'<=p->data and p->data<='z'){
            add(L2,p->data);
        }
        if ('A'<=p->data and p->data<='Z'){
            add(L3,p->data);
        }
        p=p->next;
    }
}

void showL(LinkNode *&L){
    LinkNode  *p=L;
    while(p!=NULL){
        printf("%c",p->data);
        p=p->next;
    }
}

int main(){
    LinkNode *L,*L1,*L2,*L3;
    char a[100]="ADW53dsa4q";
    int n= strlen(a);
    CreatLink(L,a,n);
    FenLi(L,L1,L2,L3);
    printf(" number is");
    showL(L1);
    printf("  small is");
    showL(L2);
    printf(" big is");
    showL(L3);
}

clion上结果

img

dev上结果:

img

31、33行,L1、L2、L3的 next并没有赋值为NULL

if ('0'<=p->data and p->data<='9') {
应该是&&吧

该回答引用GPTᴼᴾᴱᴺᴬᴵ
代码看起来没有什么问题,可能是编译器的问题导致了运行失败。你可以在dev中检查一下编译器和运行时的设置是否正确。另外,建议在程序最后加上return 0;语句,这是C++程序的规范。