在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上结果
dev上结果:
31、33行,L1、L2、L3的 next并没有赋值为NULL
if ('0'<=p->data and p->data<='9') {
应该是&&吧
该回答引用GPTᴼᴾᴱᴺᴬᴵ
代码看起来没有什么问题,可能是编译器的问题导致了运行失败。你可以在dev中检查一下编译器和运行时的设置是否正确。另外,建议在程序最后加上return 0;语句,这是C++程序的规范。