链表和并,可以编译,运行就弹错 满意加分
来源:百度知道 编辑: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)
/*两个升序单链表合并成一个有序链表
/******************************************/
#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