qq_31750507 2015-11-15 08:53 采纳率: 52.6%
浏览 1427

@数据结构大神,链接两个循环链表,第44行为何不对?求解释~

include

include

typedef struct Node
{
char data;
struct Node *next;
}Node,*Linklist;//先定义、后使用

int len;
Linklist Createlist(int *array,int len)
{
Linklist head,temp,ptr;
int i;

head=(Node*)malloc(sizeof(Node));
if(!head)
{printf("内存分配失败!");return NULL;} 

head->next=NULL;
head->data=array[0];
temp=head;

for(i=0;i<len;i++)
{ 
 ptr=(Node*)malloc(sizeof(Node));
 if(!ptr)
 {printf("内存分配失败!");return NULL;} 

 ptr->data=array[i];
 temp->next=ptr;
 temp=temp->next;
}
ptr->next=head;

return head;

}//建立循环链表 ,只有head的指针域为空

Linklist Merge(Linklist LA,Linklist LB)
{
Linklist p=LA,q=LB;
p=(Linklist)malloc(sizeof(Node));q=(Linklist)malloc(sizeof(Node));

while(p->next!=LA)p=p->next;while(q->next!=LB)q=q->next;//查找最后链表最后一位。哪里不对? 

p->next=LB->next;q->next=LA;
free(LB); 

do{
    printf("%c,\n",LA->data);
    LA=LA->next ;
}while(LA!=NULL);

return(LA);//两个链表连接,形成环

}

int main()
{
int A[100],B[100],lenA,lenB,i;
Linklist La,Lb;

printf("\ninput lenA lenB:\n");scanf("%d %d",&lenA,&lenB);
printf("\ninput A[i]:\n");

for(i=0;i<lenA;i++)
scanf("%d",&A[i]);
printf("\ninput B[i]:\n");
for(i=0;i<lenB;i++)
scanf("%d",&B[i]);

La=Createlist(A,lenA);Lb=Createlist(B,lenB);
Merge(La,Lb);
getch();
//return 0;
}

图片说明

图片说明

  • 写回答

3条回答 默认 最新

  • 普通网友 2015-11-15 10:01
    关注

    这个错误应该是访问了非法内存,上面的那一行malloc干嘛的,为嘛这样写?那一行有问题,不明白你那一行是干什么的

    评论

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站