永发信息网

用c++实现,在顺序表L上查找所有与元素e相等的元素,输出其位置。在线等。

答案:2  悬赏:0  手机版
解决时间 2021-04-02 23:46
  • 提问者网友:感性作祟
  • 2021-04-02 10:37
用c++实现,在顺序表L上查找所有与元素e相等的元素,输出其位置。在线等。
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-04-02 10:50
int Locatelist(Sqlist &L,Elemtype e)//定位
{int i=1;
Elemtype *p=L.elem;
while(i<=L.length && *p++!=e) i++;
if(i<=L.length) return i;
else return 0;
}追答
追问:查找的算法我是会的要完整的代码主要是顺序表的构造有点模糊。
追答://顺序的定义和一些相关的函数操作

#include
#include
#define Elemtype int
#define list_init_size 100
#define listincrement 10
typedef struct{ //结构体定义
Elemtype *elem;
int length;
int listsize;
}Sqlist;

int Initlist(Sqlist &L)//初始化
{
L.elem=(Elemtype*)malloc(list_init_size*sizeof(Elemtype));
if(!L.elem) {printf("overflow\n"); return 0;}
L.length=0;
L.listsize=list_init_size;
return 1;//
}

void Locatelist(Sqlist &L,Elemtype e)//定位
{int i=1;
Elemtype *p=L.elem;
while(i<=L.length && *p++!=e) i++;
if(i<=L.length)printf("%d\n",i);
else
printf("e不存在\n");
}

int Createlist(Sqlist &L,int n) //创建
{
int i;
for(i=n;i>0;i--)
{if(L.length>=L.listsize)
{Elemtype *newbase;
newbase=(Elemtype*) realloc(L.elem,(L.listsize+listincrement)*sizeof(Elemtype));
if(!newbase) {printf("overflow\n"); return 0;}
L.elem=newbase;
L.listsize+=listincrement;
}//if
printf("请输入数据:");
scanf("%d",L.elem+L.length++);
}
return 1;
}

void Printlist(Sqlist L)//输出
{
int i;
Elemtype *p;
p=L.elem;
for(i=1;i{printf("%d ",*p++);
if(i%10==0) printf("\n");
}
printf("\n");
}


void main()
{
Sqlist La;
int n,e;
printf("输入创建La时n的值:");
scanf("%d",&n);
Initlist(La);
Createlist(La,n);
Printlist(La);
printf("输入e的值:");
scanf("%d",&e);
Locatelist( La,e);

}

已经调试过了
追问:居然是C的。。。。很多语句不一样。。。不过还是谢谢你哈!
全部回答
  • 1楼网友:旧脸谱
  • 2021-04-02 11:57
p = &L;
for(i =0;i<position; i++)
{
switch(p[i])
{
case e:
cout<<position<<"\t";
break;
default
break;
}
}
具体代码自己写,大概就是这个意思。当然,用if判断也可以。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯