本專欄持續輸出數據結構題目集,歡迎訂閱。
文章目錄
- 題目
- 代碼
題目
請編寫程序,將 n 個整數存入順序表,對任一給定整數 x,將其插入順序表中指定的第 i 個位置。注意:i 代表位序,從 1 開始,不是數組下標。
輸入格式:
輸入首先在第一行給出正整數 n(≤10^4 );隨后一行給出 n 個 int 范圍內的整數,數字間以空格分隔;最后一行給出插入位置 i 和待插入的元素 x,均為 int 范圍內的整數。
輸出格式:
分以下幾種情況輸出:
如果順序表中已經有 10^4 個元素了,則不能插入,在一行中輸出句子 錯誤:表滿不能插入。
如果插入的位置不合法,則不能插入,在一行中輸出句子 錯誤:插入位置不合法。
無論是否插入成功,都在一行中順序輸出表中的元素,每個元素后面跟一個空格。
輸入樣例 1:
5
1 2 3 4 5
3 8
輸出樣例 1:
1 2 8 3 4 5
輸入樣例 2:
5
4 3 6 8 0
0 1
輸出樣例 2:
錯誤:插入位置不合法。
4 3 6 8 0
代碼
#include <stdio.h>
#define MAX_SIZE 10000int main() {int n, arr[MAX_SIZE], i, x;scanf("%d", &n);for (int j = 0; j < n; j++) {scanf("%d", &arr[j]);}scanf("%d %d", &i, &x);// 判斷是否可以插入if (n >= MAX_SIZE) {printf("錯誤:表滿不能插入。\n");} else if (i < 1 || i > n + 1) {printf("錯誤:插入位置不合法。\n");} else {// 將插入位置及之后的元素后移一位for (int j = n; j >= i; j--) {arr[j] = arr[j - 1];}// 插入新元素arr[i - 1] = x;n++; // 更新表長}// 輸出表中所有元素for (int j = 0; j < n; j++) {printf("%d ", arr[j]);}printf("\n");return 0;
}