连续存储_数组
来源:互联网 发布:addiction动作数据mmd 编辑:程序博客网 时间:2024/05/17 09:26
#include<stdio.h>#include<malloc.h>#include<stdlib.h>struct Arr{ int * pBase; //数组第一个元素的地址 int len; //数组长度 int cnt; //数组有效元素的个数};void init_arr(struct Arr * pArr , int length);int append_arr(struct Arr * pArr , int val);void insert_arr(struct Arr * pArr , int pos , int val);void delete_arr(struct Arr * pArr , int pos , int * pVal);int get();int is_empty(struct Arr * pArr);int is_full(struct Arr * pArr);void sort_arr(struct Arr * pArr);void show_arr(struct Arr * pArr);void inversion_arr(struct Arr * PArr);int main(void){ int pos; struct Arr arr; /* 初始化array */ init_arr(&arr,5); /* 添加元素 */ append_arr(&arr,1); append_arr(&arr,2); append_arr(&arr,3); append_arr(&arr,4); /* 插入元素 */ insert_arr(&arr,3,999); /* 删除元素 */ delete_arr(&arr,2,&pos); printf("删除元素-->%d\n",pos); /* 排序 */ sort_arr(&arr); /* 遍历数组 */ show_arr(&arr); /* --------------------- */ printf("%d\n",arr.len); return 0;}void init_arr(struct Arr * pArr , int length){pArr->pBase = (int *)malloc(sizeof(int) * length);if(NULL == pArr->pBase){ printf("分配内存失败!\n"); exit(-1);}else{pArr->len = length;pArr->cnt = 0;}return;}void show_arr(struct Arr * pArr){ int i; if(is_empty(pArr)) { printf("数组为空!\n"); } else { for(i=0;i<pArr->cnt;i++) { printf("arr[%d]-->%d\n",i,pArr->pBase[i]); } }}int is_empty(struct Arr * pArr){if(0 == pArr->cnt){return 1;}else{return 0;}}int is_full(struct Arr * pArr){if(pArr->cnt == pArr->len){return 1;}else{return 0;}}int append_arr(struct Arr * pArr , int val){if(is_full(pArr)){//数组已满,不能追加printf("数组已满,不能追加!\n");exit(-1);}else{pArr->pBase[pArr->cnt] = val;(pArr->cnt)++;}return 0;}/* * 在位置为pos元素前面插入val, pos的值从1开始 */void insert_arr(struct Arr * pArr , int pos , int val){ if(pos < 0 || pos > pArr->cnt) { printf("输入下标错误!\n"); return; } if(is_full(pArr)) { printf("数组已满,不能插入!\n");return; } int i; for(i=pArr->cnt;i>=pos;i--) {pArr->pBase[i] = pArr->pBase[i-1]; } pArr->pBase[pos-1] = val; (pArr->cnt)++;}void delete_arr(struct Arr * pArr , int pos , int * pVal){ int i; if(is_empty(pArr)){ return; } if(pos < 1 || pos > pArr->cnt) { return; } //保留被删除的元素 *pVal = pArr->pBase[pos-1]; for(i=pos;i<pArr->cnt;i++) { pArr->pBase[i-1] = pArr->pBase[i]; } (pArr->cnt)--;}void inversion_arr(struct Arr * pArr){ int i = 0; int j = pArr->cnt-1; int t; while(i<j) { t = pArr->pBase[i]; pArr->pBase[i] = pArr->pBase[j]; pArr->pBase[j] = t; i++; j--; } return;}void sort_arr(struct Arr * pArr){ int i,j,t; for(i=0;i<pArr->cnt;i++) { for(j=i+1;j<pArr->cnt;j++) { if(pArr->pBase[i] > pArr->pBase[j]) { t = pArr->pBase[i]; pArr->pBase[i] = pArr->pBase[j]; pArr->pBase[j] = t; } } } return;}
阅读全文
0 0
- 连续存储_数组
- 07-数据结构_线性结构-连续存储-数组
- 连续存储的数组
- 连续数组存储
- 数据结构---数组【连续存储】
- 连续存储---数组
- 【郝斌数据结构自学笔记】12-13_连续存储数组的算法演示
- 连续存储数组的算法
- 数据结构--连续存储数组算法
- 线性结构---连续存储[数组]
- 连续存储数组数组的算法演示
- 连续存储数组的算法演示
- 连续存储数组的算法演示
- 数组连续存储的相关操作
- 2014.1.20 连续存储数组算法
- 线性表之连续存储(数组)
- 连续存储数组的算法演示
- 线性表之连续存储(数组)
- 数据结构6:斐波那契数列,递归算法,求和算法专题
- 一些知识的总结
- 匿名函数与lambda
- 美团点评2017秋招笔试编程
- 向表中插入数据的几种情况
- 连续存储_数组
- hdu 1085 Holding Bin-Laden Captive!(生成函数)
- 软件开发环境说明
- 凯撒是罗马共和国杰出的军事统帅
- 关于Kotlin "===" 的特性
- 杭电acm1235 求成绩相同的人数
- 训练总结7.31
- iTextSharp使用入门(三)【将txt转换为PDF】
- JavaScript学习(二)动画