dtcms intellij idea使用教程 IntelliJ IDEA教程 北斗系统 spring codeigniter layer controller 外卖系统源码 直销系统源码 jq第一个子元素 css最后一个子元素 arduino程序 idea生成main方法 查看rabbitmq版本 input边框颜色 oracle给表增加字段 磁盘清理会误删东西吗 oracle存储过程返回值 flutter ui构建工具 mysql临时表 python在线教程 python定义变量 python正则表达式语法 python编程工具 python中import用法 java输出数组 java时间戳转换 linux入门基础 手机主题之家 lol体验服转换器 火萤壁纸下载 女圣骑 微信群群发软件 linux添加用户 手机上怎么剪辑音乐 联发科p22 bat下载 dos之家 文字底纹怎么设置
当前位置: 首页 > 学习教程  > 编程语言

数据结构:连续存储数组的算法

2021/1/13 19:35:14 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

数据结构&#xff1a;连续存储数组的算法 终于整治了拖延症&#xff0c;把数组敲完了&#xff0c;hhhh //初始化 追加 插入 删除 取值 判空 判满 倒置 显示 #include<stdio.h> #include<malloc.h> #include<stdlib.h> struct Arr {int len;int cnt;int *pB…

数据结构:连续存储数组的算法

终于整治了拖延症,把数组敲完了,hhhh

//初始化 追加 插入 删除 取值 判空 判满 倒置 显示
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct Arr
{
	int len;
	int cnt;
	int *pBace;
};

void init_arr(struct Arr *pArr,int length);
void show_arr(struct Arr *pArr);
int is_empty(struct Arr *pArr);
int is_full(struct Arr *pArr);
int append_Arr(struct Arr *pArr,int val);
int insert_arr(struct Arr *pArr,int pos,int val);
int delete_arr(struct Arr *pArr,int pos,int *pVal);
int inversion_arr(struct Arr *pArr);
int getnumber_arr(struct Arr *pArr,int pos,int *pVal_1);
int sort_arr(struct Arr *pArr);

int main()//主函数
{
	int val,val_1;
	struct Arr arr;
	init_arr(&arr,6);
	append_Arr(&arr,1);
	append_Arr(&arr,2);
	append_Arr(&arr,3);
	append_Arr(&arr,4);
	append_Arr(&arr,5);
	insert_arr(&arr,1,99);
	delete_arr(&arr,1,&val);
	printf("您删除的元素为:%d\n",val);
	show_arr(&arr);
	inversion_arr(&arr);
	show_arr(&arr);
	getnumber_arr(&arr,2,&val_1);
	printf("您提取的元素为%d\n",val_1);
	sort_arr(&arr);
	show_arr(&arr);

	return 0;
}

void init_arr(struct Arr *pArr,int length)//初始化函数
{
	pArr->pBace=(int*)malloc(sizeof(int)*length);
	if(NULL==pArr)
	{
		printf("分配空间失败!");
		exit(-1);
	}
	else
	{
		pArr->len=length;
		pArr->cnt=0;
	}
	return;
}

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;
}


void show_arr(struct Arr *pArr)//显示
{
	int i;
	if(1==is_empty(pArr))
	{
		printf("数组为空!\n");
	}
	else
	{
		for(i=0;i<pArr->cnt;i++)
			printf("%d ",pArr->pBace[i]);
		printf("\n");
	}
	return;
}

int append_Arr(struct Arr *pArr,int val)//追加
{
	if(1==is_full(pArr))
		printf("追加失败!\n");
	else
	{
		pArr->pBace[pArr->cnt]=val;
		(pArr->cnt)++;
		return 1;
	}
}



int insert_arr(struct Arr *pArr,int pos,int val)//插入
{
	int i;
	if(pos<1 || pos>pArr->cnt)
		return 0;
	if(1==is_full(pArr))
		return 0;
	for(i=pArr->cnt-1;i>=pos-1;i--)
	{
		pArr->pBace[i+1]=pArr->pBace[i];

	}
	pArr->pBace[pos-1]=val;
	pArr->cnt++;
	return 1;
	
}

int delete_arr(struct Arr *pArr,int pos,int *pVal)//删除并返回所删除的值
{
	int i;
	if(1==is_empty(pArr))
		printf("数组为空,删除失败!");
	if(pos<1||pos>pArr->cnt)
		printf("删除失败!");
	*pVal=pArr->pBace[pos-1];
	for(i=pos;i<pArr->cnt;i++)
	{
		pArr->pBace[i-1]=pArr->pBace[i];
	}
    pArr->cnt--;
}


int inversion_arr(struct Arr *pArr)//倒置
{
	int i,j,t;
	for(i=0,j=pArr->pBace[pArr->cnt]-1;pArr->pBace[j]>pArr->pBace[i];)
	{
		t=pArr->pBace[i];
		pArr->pBace[i]=pArr->pBace[j];
		pArr->pBace[j]=t;
		i++;
		j--;
	}
	return 1;
}


int getnumber_arr(struct Arr *pArr,int pos,int *pVal_1)//提取数字
{
	if(pos<1||pos>pArr->cnt)
		return 0;
	if(1==is_empty(pArr))
		return 0;
	*pVal_1=pArr->pBace[pos-1];
		

}


int 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->pBace[i]>pArr->pBace[j])
			{
				t=pArr->pBace[i];
				pArr->pBace[i]=pArr->pBace[j];
				pArr->pBace[j]=t;
			}
		}
	}
	return 1;
}


本文链接: http://www.dtmao.cc/news_show_600110.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?