C语言-数据结构(一)
1.动态创建多维数组
int ** createArray(int rows, int cols) { int **x, i; x = (int **)malloc(rows * sizeof(*x)); for (i = 0; i < rows; i++) { x[i] = (int *)malloc(cols * sizeof(**x)) } return x; }
1.线性表
特点: 1)存在唯一的一个被称为第一个的数据元素 2)存在唯一的一个被称为最后一个的数据元素 3)除第一个外, 集合中的每个数据元素均只有一个前驱 4)出最后一个外, 集合中的每个数据元素只有一个后继
表示方法: 1)顺序表示 2)链式表示
1.冒泡排序
void sort(int list[], int n) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = i; j < n; j++) { if (list[i] < list[j]) { temp = list[i]; list[i] = list[j]; list[j] = temp; } } } }
2.二分查找
int binsearch(int *list, int search, int num) { int middle; int left = 0; int right = num - 1; while (left <= right) { middle = (left + right) / 2; if (list[middle] > search) { right = middle - 1; } else if (list[middle] == search) { return middle; } else { left = middle + 1; } } return -1; }
递归版本
int binsearch(int *list, int search, int left, int right) { int middle; if (left <= right) { middle = (left + right) / 2; if (list[middle] > search) { return binsearch(list, search, left, middle - 1); } else if (list[middle] == search) { return middle; } else { return binsearch(list, search, middle + 1, right); } } return -1; }
3.