顺序数组的练习

/*顺序数组的练习*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
//定义一个结构体数组变量
typedef struct{
	int * pBase;  //定义一个指针变量,指向数组
	int cnt;     //定义一个整形变量表示当前数组的有效元素个数
	int length;  //定义数组的长度
}Arr;

void init_Arr(Arr * pArr,int length);  //初始化数组
void show_Arr(Arr * pArr);  //数组显示
bool is_empty(Arr * pArr);  //判断数组是否为空
bool append(Arr * pArr,int val);  //向数组中追加元素
bool is_full(Arr * pArr);  //判断数组是否已满
bool insert(Arr * pArr,int inval,int index);  //向数组中插入数值

//主函数入口
void main(){
	Arr arr; //定义一个Arr类型的结构体变量arr,在内存空间中申请一块空间给数组使用
	init_Arr(&arr,6);
	append(&arr,3);
	append(&arr,8);
	append(&arr,4);
	printf("目前数组中有%d个元素\n",arr.cnt);
	if(insert(&arr,3,2)){
		printf("插入值成功\n");
	}else{
		printf("插入值失败\n");
	}
	show_Arr(&arr);
}

void init_Arr(Arr * pArr,int length){
	pArr->pBase=(int *)malloc(sizeof(int) * length);
	if(NULL==pArr->pBase){
		printf("给数组分配空间失败.");
		exit(-1);
	}
	else{
		pArr->length = length;
		pArr->cnt = 0;
	}
}

void show_Arr(Arr * pArr){
	if(is_empty(pArr)){
		printf("数组为空.\n");
	}
	else{
		for(int i=0;i<pArr->cnt;i++){
			printf("%d ",pArr->pBase[i]);
		}
		printf("\n");
	}
}

bool is_empty(Arr * pArr){
	if(pArr->cnt==0){
		return true;
	}
	else{
		return false;
	}

}

bool append(Arr * pArr,int val){
	if(is_full(pArr)){
		return false;
	}
	else{
		pArr->pBase[pArr->cnt] = val;
		(pArr->cnt)++;
		return true;

	}
}

bool is_full(Arr * pArr){
	if(pArr->cnt==pArr->length){
		return true;
	}
	else{
		return false;
	}
}

bool insert(Arr * pArr,int inval,int index){
	if(is_full(pArr)){
		return false;
	}
	if(index<0 || index>pArr->length){
		return false;
	}
	else{
		for(int j=pArr->cnt;j>index;j--){
				pArr->pBase[j]=pArr->pBase[j-1];
			}
		pArr->pBase[index]=inval;
		(pArr->cnt)++;
		return true;
	}
}

运行结果如下

时间: 2024-08-24 20:21:20

顺序数组的练习的相关文章

关联数组和顺序数组的应用场景

简而言之:   关联数组:   适用:根据给定的条件,即键值,快速搜索   不适用:排序,尤其对于维数较多的关联数组   eg: $arr[$key1][$key2][$key3] 根据$key3对该数组进行排序 顺序数组:   适用:排序   不适用:根据给定的条件,快速搜索 结论:应该根据条件选择合适类型的数组

取牌求顺序数组

一副从1到n的牌,每次从牌顶取一张放桌子上,再取一张放牌堆底,直到牌堆没牌,最后桌子上底牌是从1到n有序,设计程序,输入n,输出牌堆到顺序数组. 解:"取一个1~n到数组.这里为了说明取n=5.按照题目中到规则变换,得到数组:[1 3 5 4 2],将该数组下标与值互换得到[1 5 2 4 3],即为答案.解释:[1 3 5 4 2]的意义是,经过变换,原数组中3号位置的数字现在2号槽,原数组中5号位置的数字现在3号槽...现在已知变换后的槽存放的是1~n,故只需将下标与值互换即可得到待求数组.

刷题之路第四题--取两个顺序数组的数值的中位数

Median of Two Sorted Arrays 简介:取两个顺序数组的数值的中位数 问题详解: 给定两个排序的数组nums1和nums2分别为m和n,我们需要的是两个数组中所组成一个数列的中位数. 注意: 1.需要判断数组NPE 2.结果不是int 举例 1: nums1 = [1, 3] nums2 = [2] 中位数是 2.0 2: nums1 = [1, 2] nums2 = [3, 4] 中位数是 (2 + 3)/2 = 2.5 JAVA 实现方法一: 通过NPE判断后将两个数组

数据结构学习笔记&mdash;&mdash;顺序数组2

接着昨天的数组操作,数组初始化好了,我们要往里面添加元素,可以在尾部追加或者插入,刚开始数组为空,所以先追加 int AppendList(SqList* pArr, ElemType val) { if (Is_Full(pArr)) //判断数组是否已经满了 { printf("数组已满!\n"); return 0; } pArr->elem[pArr->listsize] = val;//将相应的数据赋给数组 pArr->listsize++;//当前数组可用

删除顺序数组的重复数字

描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成. 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]. 思路: 第一次是错的,后来编译通过了,这道题我的想法是:第一,因为题上要求不能新增数组空间,所以我们考虑在原数组的覆盖,也就是把重复数字覆盖前面的一个数字,后面的依次往前覆盖,在编程里,是不存在删除一说的,只是数据的覆盖.覆盖前面的以后,最后的就可以通

数据结构学习笔记&mdash;&mdash;顺序数组1

线性表最简单的刚开始就是顺序存储结构,我是看着郝斌的视频一点一点来的,严蔚敏的书只有算法,没有具体实现,此笔记是具体的实现 为什么数据结构有ADT呢,就是为了满足数据结构的泛性,可以在多种数据类型使用 这里所说的数组并不是简单那种数组,这里所讲的是数组结构,就是在内存中是连续存储的,所以要先构造出一个这样的结构 typedef int ElemType; typedef struct { ElemType* elem; //数组结构中的数据区,可以是任何数据类型,常见的是结构体类型 int le

javascript顺序数组简单实现个二分查找

直接上码了注释写得很详细: function bsearch(A,x){ //l:查找范围左 r:查找范围右 let l = 0, //查询范围左边界 r = A.length-1, //查找范围右边界 guess //中间猜测位置 while(l <= r){ //guess等于l,r中间位置 guess = Math.floor( (l+r)/2 ) //判断当前位置是否为要查找的值,是则返回下标 if(A[guess] === x) return guess //如果当前位置值大于要查询的

顺序表的插入和删除、数组的增删改查和二分查找

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" } span.s1 { font: 24.0px Helvetica } 1.顺序表的表示 为实现顺序表的操作,首先要将其表示出来,用同数据类型的数组和表示数组的长度的整型变量表示. public class LineList{ private int[] data; private int length; public LineList(){ } pu

Numpy 学习之路(1)——数组的创建

数组是Numpy操作的主要对象,也是python数据分析的主要对象,本系列文章是本人在学习Numpy中的笔记. 文章中以下都基于以下方式的numpy导入: import numpy as np from numpy import * 1.普通数组的创建——np.arange(), np.array(), (1) arange()建立是顺序数组,函数原型:arange([start,]stop[,step],dtype=None) 其中start参数如果省略,则表示从0开始,默认的dtype为fl