本人菜鸟有个弱弱的问题请教下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都显示为空的求高手帮忙修改 谢谢大家 展开
#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都显示为空的求高手帮忙修改 谢谢大家 展开
3个回答
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");
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#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");
}
//---------------------------------------------------------------------------
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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");
}
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原来的代码问题比较多,我直接贴给你完整改好的了
#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");
}
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询