编写函数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 100typedef 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 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; }}新闻热点
疑难解答