本人菜鸟有个弱弱的问题请教下C语言高手

#include<dos.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>#defineMAX30//定义线性... #include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 30 //定义线性表的最大长度
enum BOOL{False,True}; //定义BOOL型
typedef struct{
int elem[MAX];
int last; //last指示当前线性表的长度
int listsize;
}sqlisttp;
void initial(sqlisttp &); //初始化线性表
void MergeList(sqlisttp La,sqlisttp Lb,sqlisttp Lc);
sqlisttp La,Lb,Lc;

void main()

{

sqlisttp la;
sqlisttp lb;

printf("请输入有序链表La:");
initial(la);

printf("请输入有序链表Lb:");

initial(lb);

printf("\n后面将进行合并\n\nLc:");

MergeList(La,Lb,Lc);

}
void initial(sqlisttp &v)
{ //初始化线性表

int i;

printf("请输入初始线性表长度:n="); //输入线性表初始化时的长度
scanf("%d",&v.last);
printf("请输入从1到%d的各元素(字符),例如:11223355\n",v.last);
getchar();
for(i=0;i<v.last;i++) scanf("%c",&v.elem[i]); //输入线性表的各元素
}
void MergeList(sqlisttp La,sqlisttp Lb,sqlisttp Lc)

{

Lc.last =La.last +Lb.last ;

int *pa=&(La.elem[0]);

int *pb=&(Lb.elem[0]);

int *pc=&(Lc.elem[0]);

while (pa<=&(La.elem[La.last -1])&&pb<=&(Lb.elem[Lb.last -1]))

{

if (*pa<=*pb){

*pc++=*pa++;

}

else{

*pc++=*pb++;

}

}

while (pa<=&(La.elem[La.last -1])){

*pc++=*pa++;

}

while (pb<=&(Lb.elem[Lb.last -1])){

*pc++=*pb++;

}

pc=Lc.elem ;

while(pc<=&(Lc.elem[Lc.last -1]))

{

printf("%d",*pc++);

}

printf("\n\n");

}

这个程序将LA和LB合并到LC后输出 我每次输完LA LB, LC都显示为空的求高手帮忙修改 谢谢大家
展开
 我来答
匿名用户
2010-05-20
展开全部
错误较多,如使用了C不支持的引用、数据类型使用有误等,修改如下:

//---------------------------------------------------------------------------
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 30
enum BOOL{False,True};
typedef struct{
char elem[MAX]; /*注意这里*/
int last;
int listsize;
}sqlisttp;
void initial(sqlisttp *); /*注意这里*/
void MergeList(sqlisttp *La,sqlisttp *Lb,sqlisttp *Lc); /*注意这里*/
/*注意这里*/

void main()

{

sqlisttp la;
sqlisttp lb,lc;/*注意这里*/

printf("请输入有序链表La:");
initial(&la); /*注意这里*/

printf("请输入有序链表Lb:");

initial(&lb); /*注意这里*/

printf("\n后面将进行合并\n\nLc:");

MergeList(&la,&lb,&lc);/*注意这里*/

}
void initial(sqlisttp *v)
{ //初始化线性表

int i;

printf("请输入初始线性表长度:n=");
scanf("%d",&v->last); /*注意这里*/
printf("请输入从1到%d的各元素(字符),例如:11223355\n",v->last); /*注意这里*/
getchar();
for(i=0;i<v->last;i++) scanf("%c",&(v->elem[i]));/*注意这里*/
}
void MergeList(sqlisttp *La,sqlisttp *Lb,sqlisttp *Lc) /*注意这里*/

{

Lc->last =La->last +Lb->last ;

char *pa=&(La->elem[0]); /*注意这里*/

char *pb=&(Lb->elem[0]); /*注意这里*/

char *pc=&(Lc->elem[0]); /*注意这里*/

while (pa<=&(La->elem[La->last -1])&&pb<=&(Lb->elem[Lb->last -1])) /*注意这里*/

{

if (*pa<=*pb){

*pc++=*pa++;

}

else{

*pc++=*pb++;

}

}

while (pa<=&(La->elem[La->last -1])){ /*注意这里*/

*pc++=*pa++;

}

while (pb<=&(Lb->elem[Lb->last -1])){ /*注意这里*/

*pc++=*pb++;

}

pc=Lc->elem ;/*注意这里*/

while(pc<=&(Lc->elem[Lc->last -1]))/*注意这里*/

{

printf("%c",*pc++);

}

printf("\n\n");

}

//---------------------------------------------------------------------------
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魔尊8
2010-05-20 · TA获得超过1125个赞
知道小有建树答主
回答量:535
采纳率:0%
帮助的人:574万
展开全部
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 30 //定义线性表的最大长度
enum BOOL{False,True}; //定义BOOL型
typedef struct{
int elem[MAX];
int last; //last指示当前线性表的长度
// int listsize;
}sqlisttp;
void initial(sqlisttp &); //初始化线性表
void MergeList(sqlisttp La,sqlisttp Lb,sqlisttp Lc);
//sqlisttp La,Lb,Lc;

void main()
{
sqlisttp la;
sqlisttp lb,lc;
printf("请输入有序链表La:");
initial(la);
printf("请输入有序链表Lb:");
initial(lb);
printf("\n后面将进行合并\n\nLc:");
MergeList(la,lb,lc);
}
void initial(sqlisttp &v)
{ //初始化线性表

int i;
printf("请输入初始线性表长度:n="); //输入线性表初始化时的长度
scanf(" %d ",&v.last);
printf("请输入从1到%d的各元素(字符),例如:11223355\n",v.last);
// getchar();
for(i=0;i<v.last;i++) scanf("%c",&v.elem[i]); //输入线性表的各元素
}
void MergeList(sqlisttp La,sqlisttp Lb,sqlisttp Lc)
{
Lc.last =La.last +Lb.last ;
/*int *pa=&(La.elem[0]);
int *pb=&(Lb.elem[0]);
int *pc=&(Lc.elem[0]);
printf("\n********%c\n",*pa);
while (pa<=&(La.elem[La.last -1])&&pb<=&(Lb.elem[Lb.last -1]))
{
if (*pa<=*pb)
{
*pc++=*pa++;
}
else
{
*pc++=*pb++;
}
}
while (pa<=&(La.elem[La.last -1]))
{
*pc++=*pa++;
}

while (pb<=&(Lb.elem[Lb.last -1])){

*pc++=*pb++;

}*/
int i=0,ia=0,ib=0;
while(ia<La.last&&ib<Lb.last)
{
if(La.elem[ia]<Lb.elem[ib])
Lc.elem[i++]=La.elem[ia++];
else Lc.elem[i++]=Lb.elem[ib++];
}
while(ia<La.last)
{
Lc.elem[i++]=La.elem[ia++];
}
while(ib<Lb.last)
{
Lc.elem[i++]=Lb.elem[ib++];
}

// pc=Lc.elem ;

i=0;

while(i<Lc.last)

{

printf("%c",Lc.elem[i++]);

}

printf("\n\n");

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b922963
2010-05-20 · TA获得超过354个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:0
展开全部
原来的代码问题比较多,我直接贴给你完整改好的了
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 30 //定义线性表的最大长度
enum BOOL{False,True}; //定义BOOL型
typedef struct{
int elem[MAX];
int last; //last指示当前线性表的长度
int listsize;
}sqlisttp;
void initial(sqlisttp &); //初始化线性表
void MergeList(sqlisttp La,sqlisttp Lb,sqlisttp &Lc);

void main()

{
sqlisttp la;
sqlisttp lb;
sqlisttp lc;

printf("请输入有序链表La:");
initial(la);

printf("请输入有序链表Lb:");

initial(lb);

printf("\n后面将进行合并\n\nLc:");

MergeList(la,lb,lc);

}
void initial(sqlisttp &v)
{ //初始化线性表

int i;

printf("请输入初始线性表长度:n="); //输入线性表初始化时的长度
scanf("%d",&v.last);
printf("请输入从1到%d的各元素(字符),例如:11223355\n",v.last);

getchar();
for(i=0;i<v.last;i++) scanf("%d",&v.elem[i]); //输入线性表的各元素
}
void MergeList(sqlisttp La,sqlisttp Lb,sqlisttp &Lc)

{

Lc.last =La.last +Lb.last ;

int *pa=&(La.elem[0]);

int *pb=&(Lb.elem[0]);

int *pc=&(Lc.elem[0]);

while (pa<=&(La.elem[La.last -1])&&pb<=&(Lb.elem[Lb.last -1]))

{

if (*pa<=*pb){

*pc++=*pa++;

}

else{

*pc++=*pb++;

}

}

while (pa<=&(La.elem[La.last -1])){

*pc++=*pa++;

}

while (pb<=&(Lb.elem[Lb.last -1])){

*pc++=*pb++;

}

pc=Lc.elem ;

while(pc<=&(Lc.elem[Lc.last -1]))

{

printf("%d",*pc++);

}

printf("\n\n");

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式