目录
【问题描述】
实现可变长顺序表的查找算法。任务要求:通过顺序表的初始化、插入建立顺序表,根据查找要求,返回查找结果。
【输入形式】
第一行输入整数N(1<=N<=100),M(1<=M<=100)。N表示创建长度为N的顺序表;M表示输入M个查找的关键值。
第二行输入N个整数,表示顺序表的N个元素,依次放入表中;
接下来输入M个查找的关键值。
【输出形式】
对于每个查找关键值,若找到,输出其在顺序表的位序,若未找到,输出“no”。
【样例输入】
5 2
10 20 30 40 50
30
-9
【样例输出】
3
no
- #include
- #include
- #define MAX 10
- #define IN 10
- typedef struct List{
- int *data;
- int len;
- int size;
- }List,*PList;
- int Init(PList L){
- L->data=(int *)malloc(sizeof(int)*MAX);
- L->len=0;
- L->size=MAX;
- return 1;
- }
- int Create(PList L,int n){
- int i;
- while(L->size<=n){
- L->data=(int *)realloc(L->data,sizeof(int)*(L->size+IN));
- L->size+=IN;
- }
- for(i=0;i
- scanf("%d",&L->data[i]);
- L->len++;
- }
- return 1;
- }
- int Print(PList L){
- int i;
- for(i=0;i
len;i++){ - printf("%d ",L->data[i]);
- }
- printf("\n");
- return 1;
- }
- int Find(PList L,int m){
- int i,j,e,t;
- for(i=0;i
- t=-1;
- scanf("%d",&e);
- for(j=0;j
len;j++){ - if(L->data[j]==e){
- t=j+1;
- break;
- }
- }
- if(t==-1){
- printf("no\n");
- }else{
- printf("%d\n",t);
- }
- }
- return 1;
- }
- int main(){
- List L;
- Init(&L);
- int n,m;
- scanf("%d %d",&n,&m);
- Create(&L,n);
- Find(&L,m);
- return 0;
- }
程序分析
这是一段使用动态数组实现顺序表的代码,其中定义了一个结构体List,包含三个成员变量:data(即动态数组指针)、len(表长)和size(动态数组空间大小)。下面分别介绍每个函数的作用:
1. Init函数
初始化顺序表,给动态数组分配空间并初始化表长和数组空间大小。
2. Create函数
创建顺序表,即给顺序表中的元素赋值,需要输入元素的个数n,如果n大于当前数组空间大小,则需要重新分配空间。循环输入n个元素,并将表长len加1。
3. Print函数
输出顺序表中的元素。
4. Find函数
查找顺序表中的元素,需要输入查找的次数m和每次查找的元素值。循环查找每次输入的元素值是否在数组中出现,如果出现则返回元素位置,并输出“位置+1”,否则输出“no”。
在主函数中,首先初始化顺序表,输入元素个数n和查找次数m,调用Create函数创建顺序表,再调用Find函数查找顺序表中的元素。
以上是该段代码的主要逻辑和作用。
本节文章
顺序表 1 C语言实现顺序表的插入、删除 https://want595.blog.csdn.net/article/details/126967798 2 顺序表基本练习-初始化、插入和输出 https://want595.blog.csdn.net/article/details/127737121 3 顺序表基本练习-删除元素 https://want595.blog.csdn.net/article/details/127737165 4 顺序表基本操作-查找 https://want595.blog.csdn.net/article/details/127737191 5 顺序表删除重复元素 https://want595.blog.csdn.net/article/details/126998125 6 顺序表实现集合并集 https://want595.blog.csdn.net/article/details/127737454 7 顺序表元素循环左移(new) https://want595.blog.csdn.net/article/details/128281975 8 删除顺序表中最小值 https://want595.blog.csdn.net/article/details/126984319 9 递增顺序表插入 https://want595.blog.csdn.net/article/details/126990708 10 将顺序表非零元素依次移到表的前端 https://want595.blog.csdn.net/article/details/127737349 11 删除顺序表中第一个值等于x的元素 https://want595.blog.csdn.net/article/details/127619864 12 在顺序表中,输入一个元素插入到原表的最小元素之前 https://want595.blog.csdn.net/article/details/127365247
-
相关阅读:
Git 的基本概念和使用方式以及常见错误的处理方法
SpringBoot介绍及自动装配
MinDoc文档管理系统在宝塔环境安装教程
博途PLC 1200PLC1500PLC 取消优化的块访问
专门为Web应用程序提供安全保护的设备-WAF
Bean的实例化(四)
使用golang及gorm通过MySQL实现消息队列,保证日志先行,持久化,失败补偿,事务性多客户端并发消费,可水平扩展...
git2:git概述
【31】GPU(下):为什么深度学习需要使用GPU?
分布式电源接入对配电网影响分析(Matlab代码实现)
-
原文地址:https://blog.csdn.net/m0_68111267/article/details/127737191