您的位置:首页 > 理论基础 > 数据结构算法

数据结构:实验三(查找顺序表元素)

2017-03-07 12:49 447 查看
编写函数FindList(L,x)查找顺序表中的值为x的数据并返回索引,如果没找到则返回-1

#include "stdafx.h"
#include "SeqList.h"
int main()
{
SeqList myList ;
ListInitiate(&myList);//初始化顺序表,长度为0
for (int i = 0; i < 10; i++) {//赋初值
ListInerst(&myList, i, i + 1);
printf("%d ", myList.list[i]);
}
int value;//要查找的数据
printf("\n输入要查找的数据:\n");
scanf("%d", &value);
int index = ListFind(myList, value);//数据索引
if(index != -1)//如果有这个数据,打印数据索引
printf("值为 %d 的索引为 %d ", value, index);
return 0;
}
/*
输出:
1 2 3 4 5 6 7 8 9 10
输入要查找的数据:
5
值为 5 的索引为 4
*/


SeqList.h下载地址SeqList.h头文件

SeqList.h源码:

#pragma once
#include "stdio.h"
#define MaxSize 100
typedef int DataType;
typedef struct {
DataType list[MaxSize];
int size;
}SeqList;
void ListInitiate(SeqList *L) {//初始化顺序表
L->size = 0;
}
int ListLength(SeqList L) {//返回顺序表长度
return L.size;
}
int ListInerst(SeqList *L, int i, DataType x) {//插入元素
int j;
if (L->size >= MaxSize) {
printf("顺序表已满无法插入!");
return -1;
}
else if (i<0 || i>L->size) {
printf("输入参数有误!");
return -1;
}
else {
for (int j = L->size; j > i; j--)
L->list[j] = L->list[j - 1];
L->list[i] = x;
L->size++;
return 1;
}
}
int ListDelete(SeqList *L, int i, DataType *x) {//删除元素
int j;
if (L->size <= 0) {
printf("顺序表已空,无数据可删!");
return -1;
}
else if (i<0 || i>L->size - 1) {
printf("输入参数有误!");
return -1;
}
else {
*x = L->list[i];
for (j = i + 1; j <= L->size - 1; j++)
L->list[j - 1] = L->list[j];
L->size--;
return 1;
}
}
int ListGet(SeqList L, int i, DataType *x) {//取出索引为i处的元素
if (i < 0 || i>L.size - 1) {
printf("参数不合法!");
return -1;
}
else {
*x = L.list[i];
return 1;
}
}
int ListFind(SeqList L, DataType x) {//查找元素并返回索引
int i;
bool
bda7
hasFind = false;
for (i = 0; i < L.size; i++) {
if (x == L.list[i]) {
return i;
hasFind = true;
break;
}
}
if (!hasFind) {
printf("顺序表中没有该数据!\n");
return -1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐