数据结构之C语言模拟整数数组实现
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h> typedef struct Arr
{
int * pBase = NULL; //数组首地址
int cnt; //当前元素个数
int len; //数组大小
} Array, *pArray; bool init_array(pArray arr, int len);
bool append(pArray arr, int val);
bool is_empty(pArray arr);
bool is_full(pArray arr);
void sort(pArray arr);
void reversal(pArray arr);
void show_array(pArray arr);
bool insert(pArray arr, int pos, int val); //pos 表示第一个元素。例如 pos=2,表示第二个元素。但是下标是1
bool del(pArray arr, int pos, int * val); // int * val保存删除的元素 int main(){ getchar();
return ; } bool is_full(pArray arr){
return arr->cnt == arr->len;
} bool is_empty(pArray arr){
return arr->cnt == ;
} bool init_array(pArray arr, int len){
if (len <= ) {
printf("len is too small");
return false;
} arr->pBase = (int*)malloc(sizeof(int)*len);
if (NULL == arr->pBase){
printf("init array is fail");
return false;
}
else{
arr->cnt = ;
arr->len = len;
return true;
} } bool append(pArray arr, int val){
if (is_full(arr)){
return false;
}
arr->pBase[arr->cnt] = val;
arr->cnt++;
return true;
} void sort(pArray arr){
for (int i = ; i < arr->cnt; i++) {
for (int j = ; j < arr->cnt - - i; j++) {
if (arr->pBase[j] > arr->pBase[j + ]) {
int temp = arr->pBase[j];
arr->pBase[j] = arr->pBase[j + ];
arr->pBase[j + ] = temp;
}
}
}
} void show_array(pArray arr){ if (is_empty(arr)){
printf("array is empty");
}
else{
for (int i = ; i < arr->cnt; i++) {
printf("%d ", arr->pBase[i]);
}
} } void reversal(pArray arr){
int i = ;
int j = arr->cnt - ;
while (i < j){
int temp = arr->pBase[i];
arr->pBase[i] = arr->pBase[j];
arr->pBase[j] = temp;
i++;
j--;
}
} bool insert(pArray arr, int pos, int val){
if (is_full(arr)){
printf("array is full");
return false;
} if (pos< || pos>arr->cnt + ){
return false;
} for (int i = arr->cnt - ; i >= pos - ; i--) {
arr->pBase[i + ] = arr->pBase[i];
}
arr->pBase[pos - ] = val;
arr->cnt++;
return true;
} bool del(pArray arr, int pos, int * val){
if (is_empty(arr)){
printf("array is empty");
return false;
} if (pos< || pos>arr->cnt){
return false;
} *val = arr->pBase[pos - ]; for (int i = pos; i < arr->cnt; i++){
arr->pBase[i - ] = arr->pBase[i];
}
arr->cnt--;
return true; }
数据结构之C语言模拟整数数组实现的更多相关文章
- C语言实现整数数组的逆置算法
读入100个整数到一个数组中,写出实现该数组进行逆置的算法. 方法一: 假设100个整数读入到数组a中,算法f1的思想是分别从数组两端依次将对应数进行交换,即a[i]与a[100 - i - 1]进行 ...
- [数据结构] 用C语言模拟一个简单的队列程序
#include<stdio.h> #include <stdlib.h> #include<string.h> #include<math.h> // ...
- 手工数据结构系列-C语言模拟栈 hdu1022
这个题我一开始是这么想的.. 爆搜所有可能的出栈序列 然后对输入进行匹配 这样我感觉太慢 然后我们可以想到直接通过入栈序列对出栈序列进行匹配 但是我犯了一个错误..那就是出栈序列一定到入栈序列里找.. ...
- 手工数据结构系列-C语言模拟队列和栈 hdu1702
#include <stdio.h> #include <stdlib.h> //================= DATA STRUCTURE ============== ...
- 手工数据结构系列-C语言模拟队列 hdu1276
#include <stdio.h> #include <stdlib.h> #define init_size 1000 typedef struct { int head, ...
- c语言经典算法——查找一个整数数组中第二大数
题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...
- 数据结构(c语言版)代码
第1章 绪论 文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲01 绪论 概述 第一章作为绪论,主要介绍了数据结构与算法中的一些基本概念和术语.对于这些概念术语 ...
- [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...
- 语言模拟ATM自动取款机系统
C语言实验报告 题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...
随机推荐
- 存储过程自动更新ID
DECLARE @i int --更新题序编号 UPDATE UserAnswer SET @i=@i+,TestOrder=@i WHERE UserScoreID=' //根据ID 累加更新
- HTTP 协议 -- 报头信息
报头 每一个报头都是由 [名称 + ":" + 空格 + 值 + <CR><LF>] 组成.有四种不同类型的报头: 通用报头:可用于请求,也可以用于响应,它 ...
- 判断本地是否存在Jquery文件,如果不存在则使用CDN加速的Jquery文件
<script>//判断是否成功将Jquery库引入,如果没有成功引入则引入本地Jquery库if (typeof jQuery == 'undefined') {document.wri ...
- 51nod - 1179 - 最大的最大公约数 - 枚举
因为 \(\sum\limits_{i=1}^{n}\lfloor\frac{n}{i}\rfloor=O(nlogn)\) 所以直接暴力就可以了. #include<bits/stdc++.h ...
- mysql5.7 Your password does not satisfy the current policy requirements问题解决
安装mysql5.7rpm包,在更改密码的时候,提示错误 这是由于Mysql5.7默认对于密码的要求强度较高,设置的密码过于简单不予通过.要解决这个问题,涉及到的参数有validate_passwor ...
- VisualStudio.Net应用程序制作图标
前段时间用到了VS自带打包工具,对程序进行打包,但是由于打包完成后,安装后的软件图标甚是难看于是想把图标也给打包进去.于是找到了两个解决方式. 第一种也是最简单的: 在VS中按照下面方式进行即可: 第 ...
- cuda测试二维block的使用
#include "cuda_runtime.h" #include <stdio.h> #include <stdlib.h> #include < ...
- P2962 [USACO09NOV]灯Lights 对抗搜索
\(\color{#0066ff}{题目描述}\) 贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗 ...
- Boost lockfree deque 生产者与消费者多对多线程应用
boost库中有一个boost::lockfree::queue类型的 队列,对于一般的需要队列的程序,其效率都算不错的了,下面使用一个用例来说明. 程序是一个典型的生产者与消费者的关系,都可以使用多 ...
- springcloud系列11 整合微服务网关zuul
这个模块是一个独立的模块所以需要建立一个模块, 首先引入: 依赖pom.xml <?xml version="1.0" encoding="UTF-8"? ...