Nocrossnocrown
Nocrossnocrown
采纳率92.9%
2019-05-18 20:48 阅读 250

链表输出出错,不知道具体是哪里出错,麻烦大神帮忙指正?

两链表求差集

#include <stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Node)
struct Node
{
    int a;
    struct Node* next;
};
int n;
struct Node *creat(int a)
{
    int i;
    struct Node*head;
    struct Node* p1,*p2;
    n=0;
    p1=p2=(struct Node*)malloc(LEN);
     scanf("%d",&p1->a);
    for(i=0;i<a;i++)
    {
        n++;
        if(n==1)
        {
            head=p1;
        }
        else
            p2->next=p1;
        p2=p1;
        p1=(struct Node*)malloc(LEN);
        scanf("%d",&p1->a);
    }
    p2->next=NULL;
    return(head);
};
struct Node*Different(Node*A, Node*B)
{
    Node*pa=A;
    Node*pb=B;
    Node*pre=NULL;
    Node*del;
    while(pa)
    {
        Node*pb=B;
        while(pb&&pa->a!=pb->a)
            {
                pb=pb->next;
            }
        if(pb)
        {
            if(pre==NULL)
            {
               head=pa->next;
            }
            else
            {
                pre->next=pa->next;
            }
            del=pa;
            pa=pa->next;
            delete del;
        }
        else
        {
            pre=pa;
            pa=pa->next;
        }
    }
    return(head);//返回表头位置
}
void p(Node *A)//输出链表
{
   Node *p;
   p=A;
   while(p->next!=NULL)
   {
       printf("%d ",p->a);
       p=p->next;
   }
}
int main()
{
    struct Node*m;
    struct Node*n;
    struct Node*B;
    int a,b;
    scanf("%d\n",&a);//结点数
    m=creat(a);
    scanf("%d\n",&b);//结点数
    n=creat(b);
    struct Node*A;
    B=Different(m,n);
    p(B);
    return 0;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

相关推荐