急,哪位C语言大神帮我看看这小程序
#include"stdio.h"#include"stdlib.h"#defineMAXSIZE50typedefstruct{intdata[MAXSIZE];int...
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 50
typedef struct
{ int data[MAXSIZE];
int last;
}sequenlist;
void creat(sequenlist *L)
{
int a,b;
printf("输入A表元素的个数:\t");
scanf("%d",&a);
for(int i=1;i<=a;i++)
{
printf("请输入第%d个元素\t",i);
scanf("%d",&(L->data[i])); }
printf("输入B表元素的个数:\t");
scanf("%d",&b);
i=a+1;
for(int j=1;i<=a+b;i++,j++)
{
printf("请输入第%d个元素\t",j);
scanf("%d",&(L->data[i]));
L->last=a+b;
}
}
void merge(sequenlist *L)
{int i,j,k;
i=1;
while(i<=L->last)
{j=i+1;
while(j<=L->last)
if(L->data[j]==L->data[i])
{for(k=j+1;k<=L->last;k++)
L->data[k-1]=L->data[k];
L->last=L->last-1;
}
else
j++;
i++;
}
}
void maop(sequenlist *L)
{
int k=1;
for(int i=1;i<L->last;i++)
for(int j=1;i<L->last-i;j++)
if(L->data[j]>L->data[j+1]){
k=L->data[j];
L->data[j]=L->data[j+1];
L->data[j+1]=k;
}
}
void main()
{
sequenlist *C;
C=(sequenlist *)malloc(sizeof(sequenlist));
creat(C);
merge(C);
maop(C);
printf("合并的元素为:\n");
for(int d=1;d<=C->last;d++)
printf("%d\t",C->data[d]);
printf("\n");
}
我想写个A和B顺序表的合并,删除相同元素,然后冒泡排序,分出大小。写的没出现错误,但是没办法输出最后合并的元素。错在哪,怎么改???
要是把冒泡排序删除就可以输出结果了。可是我就是不懂错在哪 展开
#include "stdlib.h"
#define MAXSIZE 50
typedef struct
{ int data[MAXSIZE];
int last;
}sequenlist;
void creat(sequenlist *L)
{
int a,b;
printf("输入A表元素的个数:\t");
scanf("%d",&a);
for(int i=1;i<=a;i++)
{
printf("请输入第%d个元素\t",i);
scanf("%d",&(L->data[i])); }
printf("输入B表元素的个数:\t");
scanf("%d",&b);
i=a+1;
for(int j=1;i<=a+b;i++,j++)
{
printf("请输入第%d个元素\t",j);
scanf("%d",&(L->data[i]));
L->last=a+b;
}
}
void merge(sequenlist *L)
{int i,j,k;
i=1;
while(i<=L->last)
{j=i+1;
while(j<=L->last)
if(L->data[j]==L->data[i])
{for(k=j+1;k<=L->last;k++)
L->data[k-1]=L->data[k];
L->last=L->last-1;
}
else
j++;
i++;
}
}
void maop(sequenlist *L)
{
int k=1;
for(int i=1;i<L->last;i++)
for(int j=1;i<L->last-i;j++)
if(L->data[j]>L->data[j+1]){
k=L->data[j];
L->data[j]=L->data[j+1];
L->data[j+1]=k;
}
}
void main()
{
sequenlist *C;
C=(sequenlist *)malloc(sizeof(sequenlist));
creat(C);
merge(C);
maop(C);
printf("合并的元素为:\n");
for(int d=1;d<=C->last;d++)
printf("%d\t",C->data[d]);
printf("\n");
}
我想写个A和B顺序表的合并,删除相同元素,然后冒泡排序,分出大小。写的没出现错误,但是没办法输出最后合并的元素。错在哪,怎么改???
要是把冒泡排序删除就可以输出结果了。可是我就是不懂错在哪 展开
3个回答
展开全部
冒泡排序你少了一对括号。好的排版可以减少这种错误的发生。还有一个小建议就是写循环之类从0开始,比如for(i=0;i<a;i++)
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 50
typedef struct
{
int data[MAXSIZE];
int last;
}sequenlist;
void creat(sequenlist *L)
{
int a,b,i,j;
printf("输入A表元素的个数:\t");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("请输入第%d个元素\t",i);
scanf("%d",&(L->data[i]));
}
printf("输入B表元素的个数:\t");
scanf("%d",&b);
i=a+1;
for(j=1;i<=a+b;i++,j++)
{
printf("请输入第%d个元素\t",j);
scanf("%d",&(L->data[i]));
L->last=a+b;
}
}
void merge(sequenlist *L)
{
int i,j,k;
i=1;
while(i<=L->last)
{
j=i+1;
while(j<=L->last)
if(L->data[j]==L->data[i])
{
for(k=j+1;k<=L->last;k++)
L->data[k-1]=L->data[k];
L->last=L->last-1;
}
else
j++;
i++;
}
}
void maop(sequenlist *L)
{
int i,j,t;
for(i=1;i<=L->last;i++)
{
for(j=1;j<=L->last-i;j++)
{//这里的括号
if(L->data[j]>L->data[j+1])
{
t=L->data[j];
L->data[j]=L->data[j+1];
L->data[j+1]=t;
}
}//这里的括号
}
}
int main()
{
int d;
sequenlist *C;
C=(sequenlist *)malloc(sizeof(sequenlist));
creat(C);
merge(C);
maop(C);
printf("合并的元素为:\n");
for(d=1;d<=C->last;d++)
printf("%d\t",C->data[d]);
printf("\n");
system("pause");
return 0;
}
更多追问追答
追问
大神,就QQ
大神,就QQ
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询