首页
┆
关于我们
┆
新闻中心
┆
产品展厅
┆
设备展示
┆
机械板块
┆
电气版块
┆
意见反馈
┆
联系我们
当前位置:
首页
>
新闻中心
>
电气版块
> 详细内容
【C语言_小知识】动态数组,输入,输出,倒置,排序 练习
发布时间:2014/6/23 阅读次数:2097 字体大小: 【
小
】 【
中
】【
大
】
这个是看了郝斌老师的数据结构后,自己写的程序,看视频的时候感觉还好,但自己敲出来,还是会有很多问题,尽管现在可以实现:
malloc
创建数组,任意位置输入值,任意位置删除之,数组元素倒置,数组元素排序,后续再回来复习!
// 练习.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "
malloc
.h"
#include "stdlib.h"
struct Arr
{
int * arradd; //数组的首地址保存
int len; //创建数组的长度
int cnt; //当前数组的有效长度
};
bool new_arr
malloc
(struct Arr *pArr); //创建动态数组
void show_arr_xinxi( struct Arr *pArr1); //数组基本长度,有效值输出
bool input_arr(struct Arr * pAss2); //数组输入值
bool is_full(struct Arr * pArr2); //判断数组是否已满
bool is_empty(struct Arr * pArr2); //判断数组是否为空
void output_arr(struct Arr *pArr4); //数组输出
bool insert_arr(struct Arr *pArr5,int pos,int val); //任意位置插入
bool delete_arr(struct Arr *pArr5,int pos); //删除任意数据
void paiup_arr(struct Arr * pArr5); //排序,降序
void daozhi_arr(struct Arr * pArr6);
int main(void)
{
struct Arr arr; //创建 结构体类型 arr;
new_arr
malloc
(&arr); //创建数组
show_arr_xinxi(&arr); //数组基本信息输出
is_empty(&arr);
input_arr(&arr); //数据输入1
input_arr(&arr); //数据输入2
input_arr(&arr); //数据输入3
input_arr(&arr); //数据输入4
input_arr(&arr); //数据输入5
input_arr(&arr); //数据输入6
delete_arr(&arr,2);
output_arr(&arr);
insert_arr(&arr,1,1000);
output_arr(&arr);
paiup_arr(&arr);
output_arr(&arr);
daozhi_arr(&arr);
output_arr(&arr);
// is_full(&arr);
// show_arr_xinxi(&arr); //数组基本信息输出
while(1);
return 0;
}
/*******************创建数组******************************/
bool new_arr
malloc
( struct Arr *pArr)
{
int len;
printf_s("请输入你需要创建数组的个数:");
scanf_s("%d",&len);
pArr->arradd = (int *)
malloc
(sizeof(int)*len);
if(NULL == pArr->arradd ) //当数组创建失败是pArr->arradd 为NULL
{
printf_s("动态分配内存失败,程序终止\n");
exit(-1); //程序异常退出 需要包含头文件#include"stdlib.h"
}
else
{ //创建成功,将数组属性写入,对应的成员
pArr->len = len;
pArr->cnt = 0;
printf_s("\n数组创建成功\n");
}
return true; //程序在这里终止
}
/********************输出数组基本信息***********************/
void show_arr_xinxi( struct Arr *pArr1)
{
printf_s("\n数组信息:\n\t数组长度:%d\n\t有效值:\t %d\n",pArr1->len,pArr1->cnt );
}
/********************数组写值***********************/
bool input_arr(struct Arr * pAss2)
{
int* Parr;
int pos;
int val;
if(is_full(pAss2))
return false;
printf_s("\n请输入插入位置pos:范围(0<pos<=%d)\t",((pAss2->len)));
scanf_s("%d",&pos);
printf_s("请在%d输入插入的数值avl:",pos);
scanf_s("%d",&val);
if(0 < pos && pos<((pAss2->len)+1))
{
printf_s("数据输入正确\n");
Parr = pAss2->arradd;
Parr[(pos-1)] = val;
pAss2->cnt++;
return true;
}
else
{
printf_s("\t输入参数有误,数据输入失败\n");
return false;
}
}
/********************判断数组是否满***********************/
bool is_full(struct Arr * pArr2)
{
if(((pArr2->len) == (pArr2->cnt)))
{
printf_s("数组数据已满\n");
return true;
}
else
{
// printf_s("剩余的储存空间为:%d\n",((pArr2->len) - (pArr2->cnt)));
return false;
}
}
/********************判断数组是为空***********************/
bool is_empty(struct Arr * pArr3)
{
if(0 == (pArr3->cnt))
{
printf_s("数组为空\n");
return true;
}
else
{
return false;
}
}
/********************数组输出***********************/
void output_arr(struct Arr *pArr4)
{
int i;
for(i=0;i<pArr4->cnt;i++)
{
printf_s("\n%d",(pArr4->arradd)
);
}
printf_s("\n输出完成\n");
}
/********************任意位置插入***********************/
bool insert_arr(struct Arr *pArr5,int pos,int val)
{
int len,cnt;
int * arr_address;
len = pArr5->len ;
cnt = pArr5->cnt ;
arr_address = pArr5->arradd;
if(is_full(pArr5))
{
printf_s("输入插入失败\n");
return false;
}
else
{
for(;cnt>=pos;--cnt)
{
arr_address[cnt] = arr_address[cnt-1];
}
arr_address[pos-1] = val;
++pArr5->cnt;
return true;
}
}
/********************任意位置删除***********************/
bool delete_arr(struct Arr *pArr5,int pos)
{
int cnt;
int * arr_address1;
cnt = pArr5->cnt ;
arr_address1 = pArr5->arradd;
if(pos > cnt)
{
printf_s("数据删除失败\n");
return false;
}
else
{
for(;pos<cnt;++pos)
{
arr_address1[pos-1] = arr_address1[pos];
}
--pArr5->cnt;
return true;
}
}
/******************** 降序排序***********************/
void paiup_arr(struct Arr * pArr5)
{
int *i;
int j,g,h,k;
i= pArr5->arradd;
k = pArr5->cnt;
printf_s("降序排序\n");
for(j=0;j<k;j++)
{
for(g=(j+1);g<k;g++)
{
if(i[j]<i[g])
{
h=i[j];
i[j] = i[g];
i[g]=h;
}
}
}
}
/********************倒置***********************/
void daozhi_arr(struct Arr * pArr6)
{
int * i;
int j,k,h;
i= pArr6->arradd;
j=(pArr6->cnt-1);
for(k=0;k<j;++k,--j)
{
h = i[k];
i[k] = i[j];
i[j] = h;
}
}
上一篇:
【C语言_小知识】堆栈的简单操作 及注意事项
下一篇:
【C语言_小知识】typedef 和 define 的区别
我要评论
评论内容...
匿名发表
[
添加到收藏夹
]
发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:
未登录
最新评论
所有评论[1]
暂无已审核评论!
本栏最新发布
[威纶通触摸屏]用宏...
2014/7/24
[资源共享]胜克机电...
2014/7/18
[威纶通触摸屏]动画...
2014/7/15
【C语言_小知识】fop...
2014/6/27
【C语言_小知识】strc...
2014/6/27
【电子元件】74HC59...
2014/6/23
【51MCU_程序实例】74...
2014/6/23
【C语言_小知识】在VS...
2014/6/23
【C语言_小知识】exi...
2014/6/23
【C语言_小知识】type...
2014/6/23
【C语言_小知识】动...
2014/6/23
【C语言_小知识】堆...
2014/6/23
【C语言_小知识】对...
2014/6/23
【C语言_小知识】补码
2014/6/23
【C语言_小知识】stru...
2014/6/23
本栏热门信息
[威纶通触摸屏]用宏...
2014/7/24
【电子元件】74HC59...
2014/6/23
【51MCU_程序实例】74...
2014/6/23
【C语言_小知识】fop...
2014/6/27
[威纶通触摸屏]动画...
2014/7/15
[资源共享]胜克机电...
2014/7/18
【C语言_小知识】exi...
2014/6/23
【C语言_小知识】在VS...
2014/6/23
【C语言_小知识】strc...
2014/6/27
【C语言_小知识】type...
2014/6/23
【C语言_小知识】stru...
2014/6/23
【C语言_小知识】堆...
2014/6/23
【C语言_小知识】对...
2014/6/23
【C语言_小知识】动...
2014/6/23
【C语言_小知识】补码
2014/6/23
惠州市胜克机电设备有限公司 版权所有
Copyright By www.hzskjd.com