在考研数据结构领域,以下是一些核心的必背代码示例:
1. 线性表插入操作:
```c
void insertList(LinkList *L, int i, ElemType e) {
if (i < 1 || i > L->length + 1) return; // 插入位置不合理
LinkList p = (LinkList)malloc(sizeof(LNode));
p->data = e;
p->next = L->elements[i - 1]->next;
L->elements[i - 1]->next = p;
L->length++;
}
```
2. 二分查找:
```c
int binarySearch(SqList *L, KeyType key) {
int low = 0, high = L->length - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (L->elements[mid].key == key) return mid;
else if (L->elements[mid].key < key) low = mid + 1;
else high = mid - 1;
}
return -1; // 未找到
}
```
3. 快速排序:
```c
void quickSort(RRBinaryTree T, int low, int high) {
if (low < high) {
KeyType pivot = T->elements[low].key;
int i = low, j = high;
while (i < j) {
while (i < j && T->elements[j].key >= pivot) j--;
T->elements[i] = T->elements[j];
while (i < j && T->elements[i].key <= pivot) i++;
T->elements[j] = T->elements[i];
}
T->elements[i] = T->elements[low];
T->elements[low] = pivot;
quickSort(T, low, i - 1);
quickSort(T, i + 1, high);
}
}
```
4. 图的深度优先遍历:
```c
void DFS(Graph G, int v) {
visited[v] = true;
printf("%d ", v);
for (int i = 0; i < G->numVertices; i++) {
if (G->adjMatrix[v][i] && !visited[i]) {
DFS(G, i);
}
}
}
```
5. 哈希表查找:
```c
Status searchHash(HashTable HT, KeyType key) {
int i = hash(key, HT->size);
while (HT->table[i].key != key && HT->table[i].flag != 0) {
i = (i + 1) % HT->size; // 开放地址法线性探测
}
if (HT->table[i].key == key) return SUCCESS;
else return NOT_FOUND;
}
```
想要高效备考,掌握这些核心代码至关重要。现在就下载【考研刷题通】小程序,政治、英语、数学等全部考研科目刷题资料一应俱全,助你一臂之力!【考研刷题通】,考研路上的得力助手!