亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

想要編寫一個函數:關于有序序列插入數據,請問該怎么實現?

想要編寫一個函數:關于有序序列插入數據,請問該怎么實現?

PHP C
皈依舞 2022-04-13 15:11:19
已有一個按遞增序排列的正整數序列Array,其中任意兩個元素都不同。現要將一正整數Key插入到序列Array中,并且依然保持Array的遞增序。在此過程中,按判定順序有可能出現以下幾種情況:1. 序列Array已經達到其容量上界;2. 序列Array中已經有與Key相等的元素存在;3.序列Array既沒有滿,也沒有與Key相等的元素,則Key可以插入序列Array之中,應獲得其Key插入序列Array后所在的下標(從0開始)。-----------------------------------------------------------------------------編寫函數getarray()、insert()和result():原型:int getarray(int array[]);功能:按輸入格式讀取一個序列,存放到整型數組array[]里。原型:int insert(int array[], int key, int vol);功能:將key插入到整型數組array[]里,vol是array[]容量上限。根據題意描述的三種情況返回不同的值(你自己設計)。原型:int result(int flag);功能:結合insert()函數的返回值,根據輸出格式和參數flag,產生不同的輸出。函數的調用格式見“Append Code”。Input輸入的一個數是M,表示后面有M組測試數據。每組測試數據有兩部分組成:2行輸入。第一部分是序列Array中的元素,最多不超過1000個,當讀到0時表示序列輸入結束。第二部分是一個正整數key。Output輸出為M行,每一行代表上述每一組輸入的插入結果。其中:如果存放序列的數組已滿,則輸出:“The array if full!”如果序列中已經有Key,則輸出:“The key is already in this array!”如果Key可以插入Array,則輸出:“The key is inserted in position x”. 其中x是Key插入數組后的下標。Sample Input31 2 3 021 2 4 5 6 7 8 9 10 03Sample OutputThe key is already in this array!Thekey is inserted in position 2.主函數為int main(){int array[MAX_SIZE], cases, i, key;scanf("%d", &cases);for(i = 1; i <= cases; i++){getarray(array);scanf("%d", &key);result(insert(array, key, MAX_SIZE - 1));}return 0;}
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

#include <stdio.h>#define MAX_SIZE 1000int getarray(int array[]){    int i = 0;    while(scanf("%d", &array[i]) == 1 && array[i++]) ;    return 0;}int insert(int array[], int key, int vol){    int i, j;    for(i = 0; i < vol; i ++)        if(!array[i]) break;    if(i == vol) return -1;//full    for(j = 0; j < i; j ++)        if(array[j] == key) return -2; //already exist        else if(array[j] > key) break;    return j;}int result(int flag){    if(flag == -1)        printf("The array if full!\n");    else if(flag == -2)        printf("The key is already in this array!\n");    else        printf("The key is inserted in position %d\n", flag);    return 0;}int main()     int array[MAX_SIZE], cases, i, key;     scanf("%d", &cases);     for(i = 1; i <= cases; i++)             getarray(array);         scanf("%d", &key);         result(insert(array, key, MAX_SIZE - 1));         return 0; }

查看完整回答
反對 回復 2022-04-19
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

#include<stdio.h>
#include<string.h>
#define MAX_SIZE 1001
int getarray(int array[])
{
int j=0;
scanf("%d",&array[j]);
while (array[j]!=0)
{
j++;
scanf("%d",&array[j]);
}
return 0;
}
int insert(int array[],int key,int vol)
{
int i;
for(i=0; i<=vol; i++)
{
if(array[vol]==0)
return -1;
else
{
if(key==array[i])
return -2;
else
{
if(key<array[0])
return 0;
if(key>array[i]&&key<array[i+1])
return i+1;
if(key>array[i]&&array[i+1]==0)
return i+1;
}
}
}
}
void result(int flag)
{
if (flag==-1)
printf("The array if full!");
else if (flag==-2)
printf("The key is already in this array!\n");
else
printf("The key is inserted in position %d.\n",flag);
}

int main()
{
int array[MAX_SIZE], cases, i, key;
scanf("%d", &cases);
for(i = 1; i <= cases; i++)
{
getarray(array);
scanf("%d", &key);
result(insert(array, key, MAX_SIZE - 1));
}
return 0;
}



查看完整回答
反對 回復 2022-04-19
  • 2 回答
  • 0 關注
  • 217 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號