/*順序數組的練習*/ #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; } }
運行結果以下數組