链表和并,可以编译,运行就弹错 满意加分

来源:百度知道 编辑:UC知道 时间:2024/06/21 02:19:00
/******************************************/
/*两个升序单链表合并成一个有序链表

/******************************************/

#include<stdlib.h>
#include<stdio.h>

typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkedList;

LinkedList LinkedListInit() //ok
{
LinkedList p;
p=(LinkedList)malloc(sizeof(LNode));

p->next=NULL;
return p;
}

LinkedList LinkedListCreat(LinkedList L) //ok
{
int x=0;
LinkedList p,s;

p=L;
printf("输入链表的值,以-1结束\n");
scanf("%d",&x);

while(x!=-1)
{
s=(LinkedList)malloc(sizeof(LNode));
s->data=x;
p->next=s;
p=s;
scanf("%d",&x);
}

p->next=NULL;
return L;
}

void LinkedListTrave(LinkedList L) //ok
{
LinkedList p;
p=L->next;
while(p)

//1.下面是程序代码,只改了LinkedListMerge函数和main函数

//2.你这段程序最主要的错误是在“合并函数”中创建了变量L3,但是并没有为

//  L3分配空间,因为最初p3=L3,所以运行到p3->next时会产生错误

//3.“合并函数”中,L3的头结点可借用L1的,也可另外申请一个新的头节点,

//   我写的这个程序是是借用L1的

//4.记得在写链表程序时,无用的节点要用free释放掉,这是一种好习惯

//5.在主函数中无需为L3申请头结点,参见第3条

/******************************************/ 

/*两个升序单链表合并成一个有序链表 

/******************************************/ 

#include<stdlib.h> 

#include<stdio.h> 

typedef struct LNode{ 

int data; 

struct LNode *next; 

}LNode,*LinkedList; 

LinkedList LinkedListInit() //ok 

LinkedList p; 

p=(LinkedList)malloc(sizeof(LNode)); 

p->next=NULL; 

return p; 

LinkedList LinkedListCreat(LinkedList L) //ok 

int x=0