Process exited after 1.026 seconds with return value 3221225477

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct link
{
char dada[10];
struct link *next;

}link;

link *Qele(char b[],link *L,int a)
{
link *temp,*r,z;
int i=0;
r=L;
for(i=0;i<a;i++)
{
r=r->next;
}
temp=(link
)malloc(sizeof(link));
strcpy(temp->dada,b);
r->next=temp;
r=r->next;
r->next=NULL;
return L;
}

link *qele(char b[],link *l,int a)
{
link *temp,*r,z;
int i;
for(i=0;i<a;i++)
{
r=r->next;
}
r=l;
temp=(link
)malloc(sizeof(link));
strcpy(temp->dada,b);
r->next=temp;
r=r->next;
r->next=NULL;
return l;
}

int main()
{
char a[10],b[10],c[10],ar[10]="IN",as[10]="V";
int n,i,r,s,nu=0,nb=0;
link *L,*l;
L->next=NULL;
l->next=NULL;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",a);
r=strcmp(ar,a);
if(r==0)
{
scanf("%s%s",b,c);
s=strcmp(as,c);
if(s==0)
{
L=Qele(b,L,nu);
nu++;
}
else
{
l=qele(b,l,nb);
nb++;
}
}
else
{
scanf("%d",c);
s=strcmp(as,c);
link *z;
if(s==0)
{
z=L->next;
L=z->next;
free(z);
nu--;
}
else
{
z=l->next;
l=z->next;
free(z);
nb--;
}
}
}
link *rs;
rs=L;
while(rs->next!=NULL)
{
printf("%s",rs->dada);
rs=rs->next;
}
rs=l;
while(rs->next!=NULL)
{
printf("%s",rs->dada);
rs=rs->next;
}

return 0;

}

Qele函数和qele函数有啥区别啊。而且逻辑也是错误的。给你改了Qele函数,参考一下:

link *Qele(char b[],link *L,int a)
{
    link *temp,*r,z;
    int i=0;
    r=L;
    for(i=0;i<a;i++) //这么写的时候,必须保证a小于链表长度,否则会出错
    {
        r=r->next;
    }
    temp=(link*)malloc(sizeof(link));
    strcpy(temp->dada,b);
    temp->next = r->next; //修改,增加这一句
    r->next=temp;
    //r=r->next; //修改,删除这两句
    //r->next=NULL;
    return L;
}

你的代码是银行排队这个题目吗?