博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C_数据结构_数组
阅读量:6708 次
发布时间:2019-06-25

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

//数组# include 
# include
//包含了 malloc 函数# include
//包含了 exit 函数struct Arr //定义了一个叫struct Arr 的数据类型没有定义变量{ int * pBase; //存储的是数组第一个元素的地址 int len; //数组能容纳的元素的个数 int cnt; //当前数组的有效的元素的个数};void init_arr(struct Arr * pArr, int length); //初始化bool append_arr(struct Arr *pArr, int val); //追加bool insert_arr(struct Arr *pArr, int pos, int val); //插入bool delete_arr(struct Arr *pArr, int pos, int * pval); //删除int get(); //获得bool is_empty(struct Arr *pArr); //判断是否为空bool is_full(struct Arr *pArr); //判断是否满void sort_arr(struct Arr *pArr); //排序void show_arr(struct Arr *pArr); //输出void inverson_arr(struct Arr *pArr); //倒置int main(void){ struct Arr arr; int val; init_arr(&arr, 6); show_arr(&arr); append_arr(&arr, 1); append_arr(&arr, 10); append_arr(&arr, -3); append_arr(&arr, 6); append_arr(&arr, 88); append_arr(&arr, 11); if( delete_arr(&ar, 4, &val) ) { printf("删除成功!\n"); printf("您删除的元素是:%d\n", val); } else { printf("删除失败!\n"); } /* append_arr(&arr, 2); append_arr(&arr, 3); append_arr(&arr, 4); append_arr(&arr, 5); insert_arr(&arr, 6, 99); append_arr(&arr, 6); append_arr(&arr, 7); if ( append_arr(&arr, 8) ) { printf("追加成功\n"); } else { printf("追加失败!\n"); }*/ show_arr(&arr); inverson_arr(&arr); printf("倒置之后的内容是:\n"); show_arr(&arr); sort_arr(&arr); printf("排序之后的结果是:\n"); 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 0;}bool is_empty(truct Arr *pArr); //判断是否为空{ if (0 == pArr->cnt) return true; else return false;}bool is_full(struct Arr *pArr); //判断是否满{ if (pArr->cnt == pArr->len) return turn; else return false;}void show_arr(struct Arr *pArr) //输出{ if ( is-empty(pArr) ) { printf("数组为空!\n"); } else { for (int i=0; i
cnt; ++i) prinf("%d ", pArr->pBase[i]); //int * printf("\n"); }}bool append_arr(struct Arr *pArr, int val); //追加{ //满时返回 false if ( is_full(pArr) ) return false; //不满时追加 pArr->pBase[pArr->cnt] = var; (pArr->cnt)++; return true;}bool insert_arr(struct Arr *pArr, int pos, int val); //插入{ int i; if ( is_full(pArr) ) return false; if (pos<1 || pos>pArr->cnt+1) return false; for (i=pArr->cnt-1; i>=pos-1; --i) { pArr->pBase[i+i] = pArr->pBase[i]; } pArr->pBase[pos-1] = val; pArr->cnt++ return true;}bool delete_arr(struct Arr *pArr, int pos, int * pVal); //删除{ if ( is-empty(pArr) ) return false; if (pos<1 || pos>pArr->cnt) return false; *pVal = pArr->pBase[pos-1] for (i=pos; i
cnt; ++i) { pArr->pBase[i-1] = pArr->pBase[i]; } pArr->cnt--; return true;}void inverson_arr(struct Arr *pArr); //倒置{ int i = 0; int j = pArr->cnt-1; 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
cnt; ++i) { for (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; } } }}

 

转载于:https://www.cnblogs.com/LXL616/p/10661602.html

你可能感兴趣的文章
NYOJ1238 最小换乘 (dijkstra)
查看>>
【Android】保存Fragment切换状态
查看>>
关于TextView的setText()与Integer之间一个易犯的小错误
查看>>
杭电OJ2004——成绩转换
查看>>
第一阶段冲刺10
查看>>
POJ-1679 The Unique MST---判断最小生成树是否唯一
查看>>
(转)关于Struts 2 拦截器参数丢失问题
查看>>
数据筛选和排序
查看>>
Promise 理解
查看>>
Ueditor在MVC中上传文件和远程图片下载的脚本
查看>>
关于索引
查看>>
让pandoc输出pdf时支持中文
查看>>
利用反射实现页面控件与实体之间的绑定
查看>>
Xamarin-Android_BaseAdapter 简单的复用
查看>>
快速傅里叶变换(FFT)
查看>>
在C#程序中使用ocx的方法
查看>>
C# 递归查找文件夹下所有文件和子文件夹的所有文件
查看>>
如何发布你的 Maya 应用到欧特克官方的 Exchange Store
查看>>
react之自定义react-redux的provider、connect
查看>>
JQuery中工厂函数$()初探
查看>>