2013年(3)
分类: Windows平台
2013-03-23 00:35:30
//数组的线性表的数据结构实现,包括大部分操作
//当然也有一些懒得去实现
#include
#include
#include
//#define LEHGRTH 12
typedef struct Arr{
int *pBase; //存储的元素第一个地址(基地址)
int len; //当前数组中的元素最大个数
int cnt; //当前有效数组元素的个数
};
void init_arr(Arr *pArr,int LEHGRTH); //初始化
bool append_arr(Arr *parr,int val);//追加
bool insert_arr(Arr *parr,int pos,int val); //插入 pos值从1开始
bool delete_arr(Arr *parr,int pos,int *pval); //删除元素
bool is_empty(Arr *arr); //是否为空
bool is_full(Arr *arr); //是否为满
bool sort_arr(); //排序
int get_element(); //获取元素
bool inversion_arr(Arr *arr);//倒置
void show_arr(Arr *arr); //显示
int main(void){
Arr arr;
int LEHGRTH =12;
init_arr(&arr,LEHGRTH );
//show_arr(&arr);
if(append_arr(&arr,3)){
printf("append is sucess\n");
}
append_arr(&arr,3);
append_arr(&arr,3);
append_arr(&arr,3);
append_arr(&arr,3);
insert_arr(&arr,4,123);
insert_arr(&arr,2,123);
show_arr(&arr);
int a;
if(delete_arr(&arr,9,&a)){
printf("the delete num is %d\n",a);
}else{
printf("the delete is wrong\n");
}
show_arr(&arr);
system("pause");
}
void init_arr(Arr *pArr,int LEHGRTH){
pArr->pBase=(int *)malloc(sizeof(int)*LEHGRTH );
if(pArr->pBase==NULL){
printf("Auto distribute is wrong");
exit(-1);
}else{
pArr->len=LEHGRTH ;
pArr->cnt=0;
}
return ;
}
void show_arr(Arr *arr){
if(is_empty(arr)==true){
printf("the arry is empty\n");
}else{
for(int i = 0;i<=arr->cnt-1;i++ ){
printf("%d ",arr->pBase[i]);
}
}
printf("\n");
return;
}
bool is_empty(Arr *arr){
if (arr->cnt==0){
return true;
}else {
return false;
}
}
bool append_arr(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->len){
return true;
}else {
return false;
}
}
bool insert_arr(Arr *parr,int pos,int val){
if(is_full(parr)){
return false;
}
if (pos<1||pos>=parr->cnt+1){
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(Arr *parr,int pos,int *pval/*传输返回值*/){
if(is_empty(parr)||pos<1||pos>=parr->cnt){
return false;
}
*pval = parr->pBase[pos-1];
for(int i = pos - 1;i<=parr->cnt;i++){
parr->pBase[i]=parr->pBase[i+1];
}
parr->cnt--;
return true;
}
bool inversion_arr(Arr *arr){
}