博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原始线性结构数组的实现以及操作
阅读量:4964 次
发布时间:2019-06-12

本文共 3669 字,大约阅读时间需要 12 分钟。

不多说直接上代码:

 

 

#include 
#include
#include
struct Arr { int *pBase; int len; int cnt;};void init_arr(struct Arr *pArr,int length);//初始化一个数组void show_arr(struct Arr *pArr);//显示某一个数组bool isEmpty(struct Arr *pArr);//判断一个数组是不是空的bool append(struct Arr *pArr,int val);//追加bool is_full(struct Arr *pArr);bool inserst(struct Arr *pArr,int pos,int val);bool delete_arr(struct Arr *pArr,int pos,int *pVal);bool getElement(struct Arr *pArr,int pos,int *pVal);void sort_arr(struct Arr *pArr);void inversion_arr(struct Arr *pArr);int main(void) { int val; struct Arr arr; init_arr(&arr,9); show_arr(&arr); append(&arr,1); append(&arr,2); show_arr(&arr); inserst(&arr,1,8); inserst(&arr,2,9); show_arr(&arr); delete_arr(&arr,2,&val); printf("删除的是第2个位置的值为%d\n",val); show_arr(&arr); getElement(&arr,2,&val); printf("得到的值是:%d\n",val); sort_arr(&arr); printf("排序\n"); show_arr(&arr); printf("倒置\n"); inversion_arr(&arr); show_arr(&arr); 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) { if(isEmpty(pArr)) { printf("数组为空\n"); } else { for(int i=0; i
cnt; i++) { printf("%d ",pArr->pBase[i]); } printf("\n"); }}//判断一个数组是不是空的bool isEmpty(struct Arr *pArr) { if( 0 == pArr->cnt) { return true; } else { return false; }}//追加参数bool append(struct Arr *pArr,int val) { if(is_full(pArr)) { printf("数组已满,不宜插入\n"); return false; } else { pArr->pBase[pArr->cnt] = val; pArr->cnt++; return true; }}//判断数组是不是已经满了bool is_full(struct Arr *pArr) { if(pArr->len == pArr->cnt) { return true; } else { return false; }}//向数组中插入数据bool inserst(struct Arr *pArr,int pos,int val) { if(pos<1 || pos>pArr->cnt+1) { printf("插入位置有误\n"); return false; } if(is_full(pArr)) { printf("数组已满\n"); return false; } for(int i=pArr->cnt-1; i>=pos-1; i--) { pArr->pBase[i+1] = pArr->pBase[i]; } pArr->pBase[pos-1] = val; pArr->cnt++; return true;}//删除指定位置的值bool delete_arr(struct Arr *pArr,int pos,int *pVal) { if(isEmpty(pArr)) { printf("数组为空!\n"); return false; } if(pos<1 || pos>pArr->cnt) { printf("要删除位置的值不存在\n"); return false; } *pVal = pArr->pBase[pos-1]; for(int i =pos; i
cnt; i++) { pArr->pBase[i-1] = pArr->pBase[i]; } pArr->cnt--; return true;}//得到相对应位置的参数bool getElement(struct Arr *pArr,int pos,int *pVal) { if(isEmpty(pArr)) { printf("数组为空!\n"); return false; } if(pos<1 || pos>pArr->cnt) { printf("位置的值不存在\n"); return false; } *pVal = pArr->pBase[pos-1]; return true;}//将相对应的数组进行一定规模的排序void sort_arr(struct Arr *pArr) { int t; if(isEmpty(pArr)) { return; } for(int i=0; i
cnt; i++) { for(int j=i+1; j
cnt; j++) { if(pArr->pBase[i]>pArr->pBase[j]) { t = pArr->pBase[i]; pArr->pBase[i] = pArr->pBase[j]; pArr->pBase[j] = t; } } }}//将数组倒置void inversion_arr(struct Arr *pArr) { int t; if(isEmpty(pArr)) { return; } int i = 0; int j = pArr->cnt-1; while(i
pBase[i]; pArr->pBase[i] = pArr->pBase[j]; pArr->pBase[j] = t; i++; j--; }}

 

这一个主要就是和上面的顺序表相互补充,可以相互借鉴,这个应该是最原始的版本了.

如果有问题请@楼主。

 

转载于:https://www.cnblogs.com/strator/p/7227634.html

你可能感兴趣的文章
注册页实现激活邮箱验证(asp.net c#) 详细实现
查看>>
打造完美的IE网页木马
查看>>
CF1109A Sasha and a Bit of Relax
查看>>
【Foreign】登山 [DP][数学]
查看>>
【codeforces】【比赛题解】#948 CF Round #470 (Div.2)
查看>>
关于实现线程死锁的一个例子
查看>>
FMDB保存数据小数
查看>>
JAVA中抽象类的一些总结
查看>>
分页, 解析器, 渲染器
查看>>
fedora输入法
查看>>
关于数组去重的几种方法-------javascript描述
查看>>
Vue.js系列之三模板语法
查看>>
hihoCoder #1238 Total Highway Distance
查看>>
JAVA基础(7)-数组的排序
查看>>
JFinal使用笔记1-部署demo项目到本地tomcat
查看>>
php 有时候难以输出显示的信息可以用ob缓冲区来做
查看>>
挖地雷
查看>>
luogu P2617 Dynamic Rankings(主席树)
查看>>
MongoDB 安装与配置
查看>>
Linux 常用命令
查看>>