未完待續:D
<pre name="code" class="c">
/*
線性結構數組的實現
*/
#include <stdio.h>
#include <malloc.h> //包含了malloc函數
#include <stdlib.h> //包含了exit函數
//首先定義描述數組信息的結構體類型
struct Arr
{
int * pBase;//存放數組首地址的指針變量
int len;//數組長度
int cnt;//數組中元素的個數
};
//定義數組的基本操作的函數聲明
void init_arr(struct Arr * pArr,int length);//數組初始化
bool append_arr(struct Arr * pArr,int val);//追加元素
bool insert_arr(struct Arr * pArr,int index ,int val);//插入元素
bool delete_arr();//刪除元素
int get(); //得到元素
bool is_empty(struct Arr * pArr);//判斷是否為空
bool is_full();//判斷是否已滿
void sort_arr();//排序
void show_arr(struct Arr * pArr);//遍歷數組
void inversion_arr();//數組倒置
int main(void)
{
struct Arr arr;
init_arr(&arr,6);//初始化函數測試
//show_arr(&arr);
append_arr(&arr,3);
append_arr(&arr,2);
append_arr(&arr,9);
insert_arr(&arr,2,7);
show_arr(&arr);
return 0;
}
//初始化數組的函數實現 pArr是結構體變量arr的指針
void init_arr(struct Arr * pArr,int length)
{
pArr->pBase=(int *)malloc(sizeof(int)*length);//malloc()函數頭文件聲明
if(NULL==pArr->pBase)
{
printf("動態內存分配失敗!\n");
exit(-1);//要在頭文件聲明
}
else
{
pArr->len=length;
pArr->cnt=0;
}
}
//遍歷數組函數實現
void show_arr(struct Arr * pArr)
{
if(is_empty(pArr))
{
printf("數組為空\n");
}
else
{
for(int i=0;i<pArr->cnt;i++)
{
printf("%d",pArr->pBase[i]);
}
}
}
//判斷數組是否為空
bool is_empty(struct Arr * pArr)
{
if(pArr->cnt==0)
return true;
else
return false;
}
//數組追加元素
bool append_arr(struct Arr * pArr,int val)
{
if(pArr->cnt < pArr->len)
{
pArr->pBase[pArr->cnt]=val;
(pArr->cnt)++;
return true;
}
else
printf("數組已滿\n");
return false;
}
//插入元素
bool insert_arr(struct Arr * pArr,int index ,int val)
{
if(pArr->cnt<pArr->len&&index<=pArr->cnt)
{
for(int i=pArr->cnt-1;i>=index-1;i--)
{
pArr->pBase[i+1]=pArr->pBase[i];
}
pArr->pBase[index-1]=val;
(pArr->cnt)++;
return true;
}
else
{
printf("插入失敗\n");
return false;
}
}</pre>