C语言链表实现大数减法 当两个大数是同位数是 不输出结果

下面是程序,当输入两个同位数的大数,输出结果就被吞了 没有了,怎么办,是什么原因
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct list
{
int num;
struct list* next;
}List;

void LinkList_reverse(List L);
void insertList(List
tempList, int num);
void inputNumber();
void SubNumber(List* list1, List* list2);
void insertList(List* tempList, int num);
void logList(List* list);
int CompareNumber(List* list1 , List* list2);
static List* initList();

static List* initList() //开辟新结点
{
List* list = NULL;
list = (List *)malloc(sizeof(List));
if (list == NULL)
{
printf("init failed---malloc failed");
return NULL;
}
list->next = NULL;
return list;
}

void inputNumber()//输入两个大数
{
char c;int a=0,b=0;
List* num[2];
printf("请输入被减数和减数。\n");
printf("被减数:");
num[0] = initList();
while ((c = getchar()) != '\n')
{
insertList(num[0], c - '0');
a++;
}
printf("减数: ");
num[1] = initList();
while ((c = getchar()) != '\n')
{
insertList(num[1], c - '0');
b++;
}
LinkList_reverse(num[0]);
LinkList_reverse(num[1]);
printf("输入数据结束\n");
printf("减法结果为:");
if(a>b)
SubNumber(num[0], num[1]);
else if(b>a)
{
printf("-");
SubNumber(num[1], num[0]);
}
else if(a==b)
CompareNumber(num[0],num[1]);

}

void SubNumber(List* list1, List* list2) //求差
{
List* result = initList();
List* temp1 = list1;
List* temp2 = list2;
List* newList=NULL;
List* temp = result;

int bitInc ;   //借位
 while (temp1->next && temp2->next) 
{    bitInc=0;
      newList = initList();
     temp->next = newList;
     if(temp1->next->num<temp2->next->num) 
         bitInc=10; 
      temp->next->num = (temp1->next->num - temp2->next->num + bitInc);
      temp1 = temp1->next;
      temp1->next->num=temp1->next->num-bitInc/ 10;
      temp2 = temp2->next;  
     temp = temp->next;
}

while (temp1->next) 
{
      newList = initList();
      temp->next = newList;
      temp->next->num = temp1->next->num;
      bitInc=0; 
      temp1 = temp1->next;
      temp = temp->next;
}
 
 LinkList_reverse(result);
 logList(result);

}

void insertList(List* tempList, int num) //将输入的数字(从高位到低位)用链表链接
{
List* temp = initList();
List* head = tempList;
if (temp != NULL)
{
temp->num = num;
}

 while (head->next) 
{
      head = head->next;
 }
 if (head->next == NULL) 
{
      head->next = temp;
 }

}

void logList(List* list) //输出链表中的数字
{
List* temp = NULL;
temp = list;
if (temp ->next == NULL)
{
printf("list is null-----log\n");
}
while (temp->next)
{
printf("%d", temp->next->num);
temp = temp->next;
}
printf("\n");
}

void LinkList_reverse(List *L)//将链表倒序
{
List *p = L->next;
List *q;
L->next = NULL;
while (p != NULL)
{
q = p;
p = p->next;
q->next = L->next;
L->next = q;
}
}

int CompareNumber(List* list1 , List* list2)//同位数比较大小
{
List* t1=list1;
List* t2=list2;
LinkList_reverse(t1);
LinkList_reverse(t2);
while(t1->next->num==t2->next->num )
{
if(t1->next->next==NULL)
break;
t1=t1->next ;
t2=t2->next ;
}

if(t1->next->num>=t2->next->num )
{    
    SubNumber(list1,list2);
} 
else
{    
    printf("-"); 
    SubNumber(list2,list1);
} 

}

int main()
{
inputNumber();
return 0;
}

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。