資料結構儲存:
struct arr ;
資料結構操作:
void init_arr(struct arr *parr, int length); //首先進行的是初始化陣列
int is_empty(struct arr *parr); //判斷陣列是否為空 return 0 1
int is_full(struct arr *parr); //判斷資料是否滿 這樣才能插入和刪除資料 return 0 1
void show_arr(struct arr *parr); //顯示資料
int insert_arr(struct arr *parr,int pos,int val); //在指定位置插入資料 pos從1開始 return 0 1
int delete_arr(struct arr *parr, int pos,int* pval);/*刪除pos的資料 並將資料返回到pval中 return 0 1 這裡並不能使用return返回刪除的值 如果刪除元素為0 會引起誤會*/
int get(struct arr *parr,int pos,int *pval); //獲得指定位置的數值
void sort_arr(struct arr *parr); //將陣列中的元素按照從小到大的順序排序
void inverse_arr(struct arr *parr); //陣列的反轉
具體**實現:
#include//標準輸入輸出函式
#include//使用 的是exit()函式
/** q:在這裡可以挖掘 標準的輸入輸出函式是怎樣實現的??
*/#include//系統級別的動態分配函式
/**定義:連續儲存 也就是系統分配一塊連續的記憶體空間 習慣上稱為陣列
*特點: 1.陣列元素相同 大小相等
* 2.具有連續的記憶體空間,且大小固定
*//*資料儲存方式
**連續的記憶體空間 有乙個指標 *pbase
*陣列大小固定 有乙個陣列總大小 len
* 有效元素的數量 cnt
*/struct arr ;
//資料的操作
void init_arr(struct arr *parr, int length); //首先進行的是初始化陣列
int is_empty(struct arr *parr); //判斷陣列是否為空 return 0 1
int is_full(struct arr *parr); //判斷資料是否滿 這樣才能插入和刪除資料 return 0 1
void show_arr(struct arr *parr); //顯示資料
int insert_arr(struct arr *parr,int pos,int val); //在指定位置插入資料 pos從1開始 return 0 1
int delete_arr(struct arr *parr, int pos,int* pval);/*刪除pos的資料 並將資料返回到pval中 return 0 1 這裡並不能使用return返回刪除的值 如果刪除元素為0 會引起誤會*/
int get(struct arr *parr,int pos,int *pval); //獲得指定位置的數值
void sort_arr(struct arr *parr); //將陣列中的元素按照從小到大的順序排序
void inverse_arr(struct arr *parr); //陣列的反轉
/**/
//主函式
int main()
void init_arr(struct arr *parr, int length)
memset(parr->pbase, 0, sizeof(int)*length);
parr->len = length;
parr->cnt = 0;
return;//****寫作習慣
}int is_empty(struct arr *parr)
int is_full(struct arr *parr)
else }
if (is_full(parr))
parr->pbase[parr->cnt] = val;
parr->cnt++;
return 1;
}void show_arr(struct arr *parr)
else
printf("\n");
} return 0;
}int insert_arr(struct arr *parr, int pos, int val)
if (pos < 1 || pos > parr->len)
for (int i = parr->cnt-1; i >= pos - 1; i--)
parr->pbase[pos - 1] = val;
parr->cnt++;
return 1;
}int delete_arr(struct arr *parr, int pos, int* pval)
if (pos < 1 || pos > parr->cnt)
*pval = parr->pbase[pos - 1];
if (pos == parr->len)
else
} parr->cnt--;
return 1;
}int get(struct arr *parr, int pos, int *pval)
if (pos < 1 || pos > parr->cnt)
pval = parr->pbase[pos - 1];
return 1;
}void sort_arr(struct arr *parr)
} if (i != k) }}
void inverse_arr(struct arr *parr)
}
uboot中的資料結構 記憶體分配
1.uboot中的資料結構 u boot的主要功能是用於引導os的,但是本身也提供許多強大的功能,可以通過輸入命令列來完成許多操作。所以它本身也是一 個很完備的系統。u boot的大部分操作都是圍繞它自身的資料結構,這些資料結構是通用的,但是不同的板子初始化這些資料就不一樣了。所以u boot的通用...
資料結構 記憶體分配中的堆和棧
棧後進先出。堆堆是一種經過排序的樹形資料結構,每個結點都有乙個值。通常我們所說的堆的資料結構,是指二叉堆。堆的特點是根結點的值最小 或最大 且根結點的兩個子樹也是乙個堆。由於堆的這個特性,常用來實現優先佇列,堆的訪問是隨意,直接取出我們想要的結點。記憶體中的棧區處於相對較高的位址以位址的增長方向為上...
資料結構 分配排序
基於分配和收集 先將資料分配到不同的桶中 再將桶中的資料收集到一起 桶式排序 單關鍵字排序 鏈式基數排序 多關鍵字排序 排序過程無須比較關鍵字,而是通過 分配 和 收集 過程來實現排序 它們的時間複雜度可達到線性階 o n 假設待排序的記錄的值在0 m 1之間 設定m個桶,依次掃瞄待排序的記錄,r ...