今日用vscode打了下面一段代码
#include<bits/stdc++.h>
using namespace std;
typedef struct lnode{
int data;
struct lnode *next;
}lnode;
int a[4]={1,2,3,4};
int n=4;
void buildlist(lnode *L){
lnode *s,*r=L;
r->data=a[0];
if(n==1) r->next=NULL;
else{
for(int i=1;i<n;i++)
{
s=(lnode *)malloc(sizeof(lnode));
s->data=a[i];
r->next=s;
r=r->next;
}
}
}
void disp(lnode *L)
{
lnode *s=L;
while(s)
{
cout<<(s->data)<<" ";
s=s->next;
}
cout<<endl;
}
void deletex(lnode *&L,int x)
{
if(L==NULL) return;
lnode *p;
if(L->data==x){
p=L;
L=L->next;
free(p);
deletex(L,x);
}
else deletex(L->next,x);
}
int main(){
lnode list;
lnode *L=&list;
buildlist(L);
disp(L);
deletex(L,2);
disp(L);
return 0;
}
并用code runner运行 输出窗口却一直不停输出一串串数字
本来以为是代码问题 但是检查没有发现问题 把代码原封不动复制到网站 c++在线工具 中却可以正常输出结果
于是百思不得其解 是code runner这个插件本身的原因吗?求解!
是代码问题,不是编译器的问题。函数 void buildlist(lnode *L)里结点的尾部next指针漏了指向 NULL,代码不严谨,修改如下:
void buildlist(lnode* L) {
lnode* s, * r = L;
r->data = a[0];
if (n == 1) r->next = NULL;
else {
for (int i = 1; i < n; i++)
{
s = (lnode*)malloc(sizeof(lnode));
s->data = a[i];
s->next = NULL;
r->next = s;
r = r->next;
}
}
}
你这个确实很奇怪,我再codeblocks上是正常输出,你是只有这个程序这样吗?
应该是的,我在DEV上输出时是