怎么才能使输出到-1停止且不输出-1


#include
#include
#include
#include
using namespace std;
typedef struct LinkNode
{
    int data;
    struct LinkNode *next;
}LinkNode;
void InitList(LinkNode *&L)
{
    L=(LinkNode*)malloc(sizeof(LinkNode));
    L->next=NULL;
}
void CreatList(LinkNode *&L,int a[],int n)
{
    LinkNode *p;
    L=(LinkNode*)malloc(sizeof(LinkNode));
    L->next=NULL;
    for (int i=0;imalloc(sizeof(LinkNode));
        p->data=a[i];
        p->next=L->next;
        L->next=p;
    }

}
void DisList1(LinkNode *L)
{
    LinkNode *p=L->next;
    printf("L1->");
    while(p!=NULL)
    {
        printf("\t%d",p->data);
        p=p->next;
    }
    printf("\n");
}
void DisList2(LinkNode *L)
{
    LinkNode *p=L->next;
    printf("L2->");
    while(p!=NULL)
    {
        printf("\t%d",p->data);
        p=p->next;
    }
    printf("\n");
}
void sort(LinkNode *&L)
{
    LinkNode *p,*pre,*q;
    p=L->next->next;
    L->next->next=NULL;
    while(p!=NULL&&p->data>=0)
    {
        q=p->next;
        pre=L;
        while(pre->next!=NULL&&pre->next->datadata)
        {
            pre=pre->next;
        }
        p->next=pre->next;
        pre->next=p;
        p=q;
    }
}
int main()
{
    LinkNode *L1,*L2;
    int a[100],b[100];
    int m=0,n=0;
    char c=' ';
    char d=' ';
    while(c!='\n')
    {
        scanf("%d",&a[m]);
        c=getchar();
        m++;
    }
    while(d!='\n')
    {
        scanf("%d",&b[n]);
        d=getchar();
        n++;
    }
    //InitList(L1);
    //InitList(L2);
    CreatList(L1,a,m);
    CreatList(L2,b,n);
    DisList1(L1);
    DisList2(L2);
    sort(*&L1);
    sort(*&L2);
    DisList1(L1);
    DisList2(L2);

}

怎么样才能使输出不包括-1呀?想了好久想不出来,还望各位神仙帮助一下我,感激不尽

在 sort 函数中,可以将条件 p->data>=0 加入到 while 循环中的判断条件中,如下所示。这样当数据为 -1 时,循环就会停止,并且不会输出 -1。


while(p!=NULL && p->data>=0)
{
    //排序操作
}