这一行为什么不执行啊

多项式相加

#include <stdio.h>
#include <stdlib.h>
typedef struct node {
    int data1;
    int data2;
    struct node *pNext;
} NODE,*PNODE;
PNODE create();
PNODE add(PNODE p1,PNODE p2);
void tra(PNODE pp);
int main()
{   PNODE p1=NULL;
    p1=create();
     PNODE p2=NULL;
    p2=create();
    printf("111\n");
    PNODE pp=NULL;
    printf("111\n");
   pp=add(p1,p2);//这一行为什么不执行啊
    printf("221\n");
   tra(pp);
    printf("222\n");
    return 0;
}

PNODE create(){
 int i;
    int n=0;
    int val=0;
    int val2=0;
        PNODE pHead = (PNODE)malloc(sizeof(NODE));
        PNODE pTail=pHead;
        pTail->pNext=NULL;

            //printf("输入此时链表长度\n");
           scanf("%d",&n);
        for(i=0;i<n;i++)//输入数据
            {
                scanf("%d %d",&val,&val2);

              PNODE pNew = (PNODE)malloc(sizeof(NODE));
              pNew->data1=val;
              pNew->data2=val2;
              pTail->pNext=pNew;
              pNew->pNext=NULL;
              pTail=pNew;}


        return pHead;

}
//加法PNODE add(PNODE p1,PNODE p2){
      PNODE pHead = (PNODE)malloc(sizeof(NODE));
        PNODE pTail=pHead;
        pTail->pNext=NULL;
        PNODE t1=NULL;
        PNODE t2=NULL;
        PNODE t3=NULL;
        t1=p1->pNext;
        t2=p2->pNext;
        while(t1&&t2){
        if(t1->data2==t2->data2){
           int sum=t1->data1+t2->data1;
           if(sum!=0){
                 t3->data2=t1->data2;
           t3->data1=sum;
            pTail->pNext=t3;
            t3->pNext=NULL;
            pTail=t3;}
            t1=t1->pNext;
            t2=t2->pNext;
        }
        else if(t1->data2>t2->data2){
                t3->data1=t1->data1;
                t3->data2=t1->data2;
                pTail->pNext=t3;
            t3->pNext=NULL;
            pTail=t3;
            t1=t1->pNext;
        }
        else if(t1->data2<t2->data2){
           t3->data1=t2->data1;
                t3->data2=t2->data2;
                pTail->pNext=t3;
            t3->pNext=NULL;
            pTail=t3;
            t2=t2->pNext;
        }

        }
        if(t2!=NULL){
            while(t2){
                t3->data1=t2->data1;
                t3->data2=t2->data2;
                pTail->pNext=t3;
            t3->pNext=NULL;
            pTail=t3;
            t2=t2->pNext;
            }
        }
        if(t1!=NULL){
            while(t1){
                 t3->data1=t1->data1;
                t3->data2=t1->data2;
                pTail->pNext=t3;
            t3->pNext=NULL;
            pTail=t3;
            t1=t1->pNext;
            }
        }

       return pHead;

}
//遍历
void tra(PNODE pp){
   PNODE p=pp->pNext;
   while(p!=NULL){
    printf("%d %d",p->data1,p->data2);
    p=p->pNext;
   }
   return ;

}


t3指针没有初始化

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^