合并顺序表的问题

sEPTEMBREs 2019-10-12 12:14:29
菜鸟新手求教,c基础实在太菜,后天又要考实验了,老师给的代码输了半天,然而不知道为什么出错,也不知道接下去该怎么搞了 求大佬指点 下面是代码 #include <stdio.h> #define MAXSIZE 100 /* 顺序表的最大长度 */ typedef int ElemType; /*ElemType 为顺序表元素的类型 */ typedef struct{ ElemType data[MAXSIZE]; int length; /* 顺序表的实际长度 */ }SqList; void Creat_SqList(SqList *L,int n){ int i; L->length=n; i=0; printf("\ninput %d data : ",n); while(i<n){ scanf("%d",&L->data[i]); i++; } } void Print_SqList(SqList *L) { int i,n; n=L->length; i=0; printf("\noutput %d data : ",n); while(i<n) { printf("%d ",L->data[i]); i++; } } //合并函数的定义 merge_SeqList (SeqList *LA, SeqList *LB, SeqList *LC) { int i,j,k; i=0,j=0,k=0; while(i<LA->length&&j<LB->length) if(LA->ElemType data[i]<LB->ElemType data[j]) { LC->ElemType data[k]=LA->ElemType data[i]; i++; k++; } else { LC->ElemType data[k]=LB->ElemType data[j]; j++; k++; } while(i<LA->length) { LC->ElemType data[k]=LA->ElemType data[i]; i++; k++; } while(j<LB->last) { LC->ElemType data[k]=LB->ElemType data[j]; j++; k++; } LC->length=LA->length+LB->length+1; } main() //主函数 { SqList LA,LB,LC; int n; printf("\n input1: "); scanf("%d",&n); Creat_SqList(&LA,n); //开始进行第二个数组的输入 n=0; printf("\n input2: "); scanf("%d",&n); Creat_SqList(&LB,n);//输入完毕 Print_SqList(&LA); Print_SqList(&LB); }
...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sEPTEMBREs 2020-01-13
  • 打赏
  • 举报
回复
引用 1 楼 自信男孩的回复:
#include <stdio.h>

#define MAXSIZE 100 /* 顺序表的最大长度 */

typedef int ElemType; /*ElemType 为顺序表元素的类型 */
typedef struct{
ElemType data[MAXSIZE];
int length; /* 顺序表的实际长度 */
}SqList;


void Creat_SqList(SqList *L,int n)
{
int i;
L->length=n;
i=0;
printf("\ninput %d data : ", n);
while(i<n){
scanf("%d",&L->data[i]);
i++;
}
}

void Print_SqList(SqList *L)
{
int i,n;
n=L->length;
i=0;
printf("\noutput %d data : ",n);
while(i<n)
{
printf("%d ", L->data[i]);
i++;
}
printf("\n");
}

//合并函数的定义

//merge_Seq (SeqList *LA, SeqList *LB, SeqList *LC)
void merge_Seq (SqList *LA, SqList *LB, SqList *LC)
{
int i,j,k;
i=0,j=0,k=0;


while(i<LA->length&&j<LB->length)
//if(LA->ElemType data[i]<LB->ElemType data[j])
if(LA->data[i] < LB->data[j])
{
//LC->ElemType data[k]=LA->ElemType data[i];
LC->data[k] = LA->data[i];
i++;
k++;
}
else
{
//LC->ElemType data[k] = LB->ElemType data[j];
LC->data[k] = LB->data[j];
j++;
k++;
}

while(i < LA->length)
{
//LC->ElemType data[k]=LA->ElemType data[i];
LC->data[k] = LA->data[i];
i++;
k++;
}


//while(j<LB->last)
while(j<LB->length)
{
//LC->ElemType data[k]=LB->ElemType data[j];
LC->data[k] = LB->data[j];
j++;
k++;
}
//LC->length = LA->length+LB->length+1;
LC->length = LA->length+LB->length;
}



//main()
int main(void)
{
SqList LA,LB,LC;
int n;
printf("\n input1: ");
scanf("%d", &n);
Creat_SqList(&LA,n);

//开始进行第二个数组的输入
n=0;
printf("\n input2: ");
scanf("%d",&n);
Creat_SqList(&LB,n);//输入完毕

Print_SqList(&LA);
Print_SqList(&LB);

merge_Seq(&LA, &LB, &LC);
Print_SqList(&LC);
}


供参考~
(⊙o⊙)哇谢谢啦😘
自信男孩 2019-10-12
  • 打赏
  • 举报
回复
#include <stdio.h>

#define MAXSIZE 100 /* 顺序表的最大长度 */

typedef int ElemType; /*ElemType 为顺序表元素的类型 */
typedef struct{
ElemType data[MAXSIZE];
int length; /* 顺序表的实际长度 */
}SqList;


void Creat_SqList(SqList *L,int n)
{
int i;
L->length=n;
i=0;
printf("\ninput %d data : ", n);
while(i<n){
scanf("%d",&L->data[i]);
i++;
}
}

void Print_SqList(SqList *L)
{
int i,n;
n=L->length;
i=0;
printf("\noutput %d data : ",n);
while(i<n)
{
printf("%d ", L->data[i]);
i++;
}
printf("\n");
}

//合并函数的定义

//merge_Seq (SeqList *LA, SeqList *LB, SeqList *LC)
void merge_Seq (SqList *LA, SqList *LB, SqList *LC)
{
int i,j,k;
i=0,j=0,k=0;


while(i<LA->length&&j<LB->length)
//if(LA->ElemType data[i]<LB->ElemType data[j])
if(LA->data[i] < LB->data[j])
{
//LC->ElemType data[k]=LA->ElemType data[i];
LC->data[k] = LA->data[i];
i++;
k++;
}
else
{
//LC->ElemType data[k] = LB->ElemType data[j];
LC->data[k] = LB->data[j];
j++;
k++;
}

while(i < LA->length)
{
//LC->ElemType data[k]=LA->ElemType data[i];
LC->data[k] = LA->data[i];
i++;
k++;
}


//while(j<LB->last)
while(j<LB->length)
{
//LC->ElemType data[k]=LB->ElemType data[j];
LC->data[k] = LB->data[j];
j++;
k++;
}
//LC->length = LA->length+LB->length+1;
LC->length = LA->length+LB->length;
}



//main()
int main(void)
{
SqList LA,LB,LC;
int n;
printf("\n input1: ");
scanf("%d", &n);
Creat_SqList(&LA,n);

//开始进行第二个数组的输入
n=0;
printf("\n input2: ");
scanf("%d",&n);
Creat_SqList(&LB,n);//输入完毕

Print_SqList(&LA);
Print_SqList(&LB);

merge_Seq(&LA, &LB, &LC);
Print_SqList(&LC);
}


供参考~

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧