顺序查找算法练习
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 792 (219 users) Total Accepted: 236 (210 users) Special Judge: No
Description
在一个顺序表中查找某个关键字是否存在。
Input
输入为多组数据,每组为两行数据,每组中第一行为建立查找的顺序表,第二行是要查找的关键字。
Output
若找到关键字,则输出关键字在表中的位置,否则输出0.
Sample Input
1 2 3 4 5
10
1 2 3 4 5
5
Sample Output
0
5
#include<stdio.h>
#include<stdlib.h>
typedef int elep;
#define maxn 1005
struct st {
elep *p;
int length;
};
st start() {
st s;
s.p=(elep*)malloc(sizeof(elep)*maxn);
s.length=0;
return s;
}
int search(st &s,int key) {
for(int i=1; i<=s.length; i++) {
if(s.p[i]==key) {
return i;
}
}
return 0;
}
void insert(st &s,int e) {
s.p[s.length+1]=e;
s.length++;
}
void deletelast(st &s) {
s.length--;
}
int main() {
char x[1005];
int key;
st s=start();
while(gets(x)) {
scanf("%d",&key);
st s=start();
int temp=0;
for(int i=0;x[i]!='\0';i++){
if(x[i]==' '){
insert(s,temp);
temp=0;
continue;
}
temp=temp*10+(x[i]-'0');
}
if(temp!=0){
insert(s,temp);
}
printf("%d\n",search(s,key));
getchar();
}
}
#include<stdio.h>
#include<stdlib.h>
#define Size 1000
typedef struct Lt {
int *head;
int length;
int size;
} lt;
lt initList() {
lt l;
l.head=(int*)malloc(Size*sizeof(int));
if(!l.head) {
exit(0);
}
l.length=0;
l.size=Size;
return l;
}
void sss(lt l,int n,int e) {
int t=0;
for(int k=1; k<=n-1; k++) {
if(l.head[k]==e) {
printf("%d\n",k);
t=1;
break;
}
}
if(t==0) {
printf("0\n");
}
}
int main() {
int x,e;
lt l=initList();
int n=1;
while(~scanf("%d",&x)) {
l.head[n]=x;
n++;
if(getchar()=='\n') {
scanf("%d",&e);
sss(l,n,e);
n=1;
}
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
typedef int elep;
#define maxn 1005
struct sq
{
elep *p;
elep length;
elep size;
};
void insert(sq &l,int x)
{
l.p[l.length+1]=x;//插入元素
l.length++;//刷新表内元素个数
}
sq start()
{
sq l;
l.p=(int *)malloc(maxn*sizeof(elep));//开辟空间
l.length=0;
l.size=maxn;//设置最大容量
return l;
}
int research(sq l,int e)
{
for(int i=1; i<=l.length; i++) //搜索e
{
if(l.p[i]==e)
{
return i;
}
}
return 0;
}
int main()
{
sq l;
int a,b;
l=start();
while(~scanf("%d",&a))
{
insert(l,a);
if(getchar()=='\n')
{scanf("%d",&b);
printf("%d\n",research(l,b));}
}
}