线性表 新手求助,谢谢!!C\C++
本帖最后由 beannaeb 于 2020-9-26 21:48 编辑有两个递增有序顺序表A和B,分别含有n和m个整数元素(最大的元素不超过32767),假设这n+m个元素均不相同.设计一个算法求n+m个元素中第k小的元素.如果参数k错误,算法返回0,否则算法返回1,并且用参数e表示求出的第k小的元素. 什么语言?C语言还是python,还什么什么语言?
看着说线性表,是不是C语言啊? 本帖最后由 beannaeb 于 2020-9-26 21:47 编辑
sunrise085 发表于 2020-9-26 21:38
什么语言?C语言还是python,还什么什么语言?
看着说线性表,是不是C语言啊?
C语言 beannaeb 发表于 2020-9-26 21:46
C语言
你的线性表打算用什么来做?单链表,还是双向链表?链表什么形式?你一点都没有写吗??
直接来求作业的?
你若给出你的线性表的形式,让别人帮你写一下这个查找函数,那还可行。但是你什么也没有,那每个人写出来的可能会有很大的差别哎。需要先帮你写一个链表,然后再写这个函数。。。 sunrise085 发表于 2020-9-26 21:58
你的线性表打算用什么来做?单链表,还是双向链表?链表什么形式?你一点都没有写吗??
直接来求作业的 ...
作业题,自己写的最后运行结果有问题
#include<stdio.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data;
int length;
}SqList;
void InitList(SqList &L)
{
L.length=0;
}
int GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
return 0;
else
{
e=L.data;
return 1;
}
}
int InsElem(SqList&L,ElemType x,int i)
{
int j;
if(i<1||i>L.length+1)
return 0;
for (j=L.length;j>i;j--)
L.data=L.data;
L.data=x;
L.length++;
return 1;
}
void DispList(SqList L)
{
int i;
for (i=0;i<L.length;i++)
printf("%d",L.data);
printf("\n");
}
#define INF 32767
int Topk2(SqList A,SqList B,int k,ElemType&e)
{
int i=0,j=0;
if(k<1||k>A.length+B.length)
return 0;
while(true)
{
k--;
int x=(i<A.length?A.data:INF);
int y=(j<B.length?B.data:INF);
if(x<y)
{
if(k==0)
{
e=x;
return 1;
}
i++;
}
else
{
if(k==0)
{
e=y;
return 1;
}
j++;
}
}
}
int main()
{
int k=2;ElemType e;
SqList A;
SqList B;
InitList(A);
InitList(B);
InsElem(A,1,1);
InsElem(A,2,2);
InsElem(A,3,3);
InsElem(A,4,4);
InsElem(A,5,5);
InsElem(A,6,6);
InsElem(B,7,1);
InsElem(B,8,2);
InsElem(B,9,3);
InsElem(B,10,4);
InsElem(B,11,5);
InsElem(B,12,6);
printf("线性表A:");DispList(A);
printf("线性表B:");DispList(B);
printf("第%d小元素为:%d\n",k);Topk2;
} beannaeb 发表于 2020-9-26 22:06
作业题,自己写的最后运行结果有问题
#include
#define MaxSize 100
请以代码的形式发代码
不会发代码,请看这里
你的 线性表可以正常运行吗 sunrise085 发表于 2020-9-26 22:08
请以代码的形式发代码
不会发代码,请看这里
你的 线性表可以正常运行吗
运行可以,但是结果有问题 beannaeb 发表于 2020-9-26 22:11
运行可以,但是结果有问题
#include<stdio.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data;
int length;
}SqList;
void InitList(SqList &L)
{
L.length=0;
}
int GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
return 0;
else
{
e=L.data;
return 1;
}
}
int InsElem(SqList&L,ElemType x,int i)
{
int j;
if(i<1||i>L.length+1)
return 0;
for (j=L.length;j>i;j--)
L.data=L.data;
L.data=x;
L.length++;
return 1;
}
void DispList(SqList L)
{
int i;
for (i=0;i<L.length;i++)
printf("%d",L.data);
printf("\n");
}
#define INF 32767
int Topk2(SqList A,SqList B,int k,ElemType&e)
{
int i=0,j=0;
if(k<1||k>A.length+B.length)
return 0;
while(true)
{
k--;
int x=(i<A.length?A.data:INF);
int y=(j<B.length?B.data:INF);
if(x<y)
{
if(k==0)
{
e=x;
return 1;
}
i++;
}
else
{
if(k==0)
{
e=y;
return 1;
}
j++;
}
}
}
int main()
{
int k=2;ElemType e;
SqList A;
SqList B;
InitList(A);
InitList(B);
InsElem(A,1,1);
InsElem(A,2,2);
InsElem(A,3,3);
InsElem(A,4,4);
InsElem(A,5,5);
InsElem(A,6,6);
InsElem(B,7,1);
InsElem(B,8,2);
InsElem(B,9,3);
InsElem(B,10,4);
InsElem(B,11,5);
InsElem(B,12,6);
printf("线性表A:");DispList(A);
printf("线性表B:");DispList(B);
printf("第%d小元素为:%d\n",k);Topk2;
} 本帖最后由 sunrise085 于 2020-9-26 22:40 编辑
beannaeb 发表于 2020-9-26 22:12
你的程序没什么大问题,就是93行写的不对。函数调用怎么这么写?printf中两个格式化字符,但是后面只给了一个变量k
#include<stdio.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data;
int length;
}SqList;
void InitList(SqList &L)
{
L.length=0;
}
int GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
return 0;
else
{
e=L.data;
return 1;
}
}
int InsElem(SqList&L,ElemType x,int i)
{
int j;
if(i<1||i>L.length+1)
return 0;
for (j=L.length;j>i;j--)
L.data=L.data;
L.data=x;
L.length++;
return 1;
}
void DispList(SqList L)
{
int i;
for (i=0;i<L.length;i++)
printf("%d ",L.data);
printf("\n");
}
#define INF 32767
int Topk2(SqList A,SqList B,int k,ElemType&e)
{
int i=0,j=0;
if(k<1||k>A.length+B.length)
return 0;
while(true)
{
k--;
int x=(i<A.length?A.data:INF);
int y=(j<B.length?B.data:INF);
if(x<y)
{
if(k==0)
{
e=x;
return 1;
}
i++;
}
else
{
if(k==0)
{
e=y;
return 1;
}
j++;
}
}
}
int main()
{
int k=2,flag;
ElemType e;
SqList A;
SqList B;
InitList(A);
InitList(B);
InsElem(A,1,1);
InsElem(A,2,2);
InsElem(A,3,3);
InsElem(A,4,4);
InsElem(A,5,5);
InsElem(A,6,6);
InsElem(B,7,1);
InsElem(B,8,2);
InsElem(B,9,3);
InsElem(B,10,4);
InsElem(B,11,5);
InsElem(B,12,6);
printf("线性表A:");
DispList(A);
printf("线性表B:");
DispList(B);
flag=Topk2(A,B,k,e);//调用函数Topk2,得到元素e,若flag为0,说明k参数不对,没找到。
if (flag)
printf("第%d小元素为:%d\n",k,e);
else
printf("参数k设置错误,k小于1或者超出两个列表的长度总和!");
} sunrise085 发表于 2020-9-26 22:20
你的程序没什么大问题,就是93行写的不对。函数调用怎么这么写?printf中两个格式化字符,但是后面只给了 ...
k怎么改结果都是设置错误 beannaeb 发表于 2020-9-26 22:37
k怎么改结果都是设置错误
哦,忘了。我测试的时候直接在第96行把k改成13了,忘记改回k了。。
现在改回去了 sunrise085 发表于 2020-9-26 22:39
哦,忘了。我测试的时候直接在第96行把k改成13了,忘记改回k了。。
现在改回去了
哦,谢谢 beannaeb 发表于 2020-9-26 22:44
哦,谢谢
若问题解决了,请给评个最佳
页:
[1]