順序數組的練習

/*順序數組的練習*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
//定義一個結構體數組變量
typedef struct{
	int * pBase;  //定義一個指針變量,指向數組
	int cnt;     //定義一個×××變量表示當前數組的有效元素個數
	int length;  //定義數組的長度
}Arr;

void init_Arr(Arr * pArr,int length);  //初始化數組
void show_Arr(Arr * pArr);  //數組顯示
bool is_empty(Arr * pArr);  //判斷數組是否爲空
bool append(Arr * pArr,int val);  //向數組中追加元素
bool is_full(Arr * pArr);  //判斷數組是否已滿
bool insert(Arr * pArr,int inval,int index);  //向數組中插入數值

//主函數入口
void main(){
	Arr arr; //定義一個Arr類型的結構體變量arr,在內存空間中申請一塊空間給數組使用
	init_Arr(&arr,6);
	append(&arr,3);
	append(&arr,8);
	append(&arr,4);
	printf("目前數組中有%d個元素\n",arr.cnt);
	if(insert(&arr,3,2)){
		printf("插入值成功\n");
	}else{
		printf("插入值失敗\n");
	}
	show_Arr(&arr);
}

void init_Arr(Arr * pArr,int length){
	pArr->pBase=(int *)malloc(sizeof(int) * length);
	if(NULL==pArr->pBase){
		printf("給數組分配空間失敗.");
		exit(-1);
	}
	else{
		pArr->length = length;
		pArr->cnt = 0;
	}
}

void show_Arr(Arr * pArr){
	if(is_empty(pArr)){
		printf("數組爲空.\n");
	}
	else{
		for(int i=0;i<pArr->cnt;i++){
			printf("%d ",pArr->pBase[i]);
		}
		printf("\n");
	}
}

bool is_empty(Arr * pArr){
	if(pArr->cnt==0){
		return true;
	}
	else{
		return false;
	}

}

bool append(Arr * pArr,int val){
	if(is_full(pArr)){
		return false;
	}
	else{
		pArr->pBase[pArr->cnt] = val;
		(pArr->cnt)++;
		return true;

	}
}

bool is_full(Arr * pArr){
	if(pArr->cnt==pArr->length){
		return true;
	}
	else{
		return false;
	}
}

bool insert(Arr * pArr,int inval,int index){
	if(is_full(pArr)){
		return false;
	}
	if(index<0 || index>pArr->length){
		return false;
	}
	else{
		for(int j=pArr->cnt;j>index;j--){
				pArr->pBase[j]=pArr->pBase[j-1];
			}
		pArr->pBase[index]=inval;
		(pArr->cnt)++;
		return true;
	}
}

運行結果以下數組


wKioL1gYhiiSaQjcAAA1zAnjtOY389.jpg-wh_50

相關文章
相關標籤/搜索