跳至主要內容
PAT 数据结构

PAT 数据结构

PAT甲级题目整理

链表

  • 做题时一般使用静态链表
struct Node {
    int data;
    Node* next;
};

//静态链表
struct Node {
    int data;
    int next;
} node[MAX];

Node* create(int arr[]) {
    Node* p, head, pre;
    head = new Node;
    head->next = NULL;
    pre = head;
    for (int i = 0; i < n; ++i) {
        p = new Node;
        p->data = arr[i];
        p->next = NULL;
        pre->next = p;
        pre = p;
    }
    return head;
}

PATPATAlgorithm
PAT 基础算法

PAT 基础算法

PAT甲级题目整理

进制转换

//p进制转换为十进制
int main() {
    char a[MAX];
    int ans = 0;
    for (int i = 0; i < n; ++i) {
        ans += ans * p + a[i] - '0';
    }
    return 0;
}

//十进制转换为p进制
int main() {
    int ans[MAX], num = 0;
   	do {
        ans[num++] = a % p;
        a /= p;
    } while (a > 0);
    
    for (int i = num - 1; i >= 0; --i) {
        printf("%d", ans[i]);
    }
}

PATPATAlgorithm
PAT 高级算法

PAT 高级算法

PAT甲级题目整理

BFS

void BFS(int s) {
    queue<int> q;
    q.push(s);
    while (q.size()) {
        //1.取出队首元素
        //2.队首元素出队
        //3.访问队首元素
        //4.将下一层节点没有入过队的元素入队
    }
}

PATPATAlgorithm
PAT 排序算法

PAT 排序算法

PAT甲级题目整理

交换排序

冒泡排序

void bubble_sort() {
    for (int i = 1; i < n; ++i) {
    	bool did_swap = false;
        for (int j = 0; j < n - i; ++j) {
        	if (a[j] > a[j + 1]) {
            	swap(a[j], a[j+1]);
            	did_swap = true;
        	}
        }
        if (!did_swap) return;
    }
}

PATPATAlgorithm