数据结构之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自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...
随机推荐
- STL 结构体 内部函数
typedef struct Node { int val; string name; bool operator < (const Node &right) const { retur ...
- win7 64位 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认
问题描述: VBA程序连接Access数据库,Excel中执行相关宏,提示[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认 解决方案: 1.重新安装 AccessDa ...
- 判断某元素是否在Array中
几年前,Insus.NET有尝试把Array转换为IList接口,然后使用IList.Contains()方法.当时评论时,也引起了一些异议.原博文地址:http://www.cnblogs.com/ ...
- STM32单片机串口中断+DMA使用(含CUBE配置)
最近又要重新用32做点东西,发现一两年没怎么碰的结果就是,曾经熟得不行的东西都变得极度陌生,这种重新学习记忆的过程过于痛苦,果然还是要留下一些记录给之后失忆的自己的. 1.STM32CUBE配置 1. ...
- Glib学习笔记(二)
你将学到什么 如何实现Object的构造函数和析构函数 如何在条件检测不允许的情况下终止对象创建 Object的构造函数 对象的构造函数是不允许失败,如果你需要一个允许失败的GObject构造函数,使 ...
- Java基础之身份证验证
//简约版package test; import java.util.Scanner; public class ID { /** * 匹配算法 : 1) 得到17位身份证号码与下面给出的17位 2 ...
- 模板 ST表
ST表 询问静态最值. code: #include <iostream> #include <cstdio> using namespace std; inline int ...
- centos操作---搭建环境 安装python
1.安装python3.6.2 安装依赖 yum -y groupinstall "Development tools" yum -y install zlib-devel bzi ...
- StackOverflow
stackoverflow栈溢出 stacker栈式存储器 signup注册 signin登陆 inbox收信信箱 verify 核实 otherwise另外的 noted说明 (就是说有明文指出 ...
- Exadata X7来了
1.Exadata Brings In-Memory OLTP to Storage Exadata Storage Servers add a memory cache in front of Fl ...