逆序輸出的數列

2021-10-03 20:49:58 字數 1201 閱讀 8915

題目:逆序輸出的數列(第五周)

題目內容:

你的程式會讀入一系列的正整數,預先不知道正整數的數量,一旦讀到-1,就表示輸入結束。然後,按照和輸入相反的順序輸出所讀到的數字,不包括最後標識結束的-1。

輸入格式:一系列正整數,輸入-1表示結束,-1不是輸入的資料的一部分。

輸出格式:按照與輸入相反的順序輸出所有的整數,每個整數後面跟乙個空格以與後面的整數區分,最後的整數後面也有空格。

輸入樣例:1 2 3 4 -1

輸出樣例:4 3 2 1

思路:可以用陣列實現,也可以用指標實現;但是陣列限定了輸入數的長度,且需要連續的記憶體空間。

方法1:(陣列)

#include

#include

int main()

arr[i] = val;

i++;

}while(val != -1);

for(j=i-2; j>=0; j--)

}方法二:(鍊錶)

#include

#include

typedef struct nodenode;

//前置宣告

struct node * create_list(void);

void input(struct node * phead, int val);

void output(struct node * phead);

int main()

}while(val != -1);

//輸出鍊錶,注意頭結點元素不輸出,頭結點內部存放的不是有效值

output(phead);

}//建立鍊錶

struct node * create_list(void)

//給鍊錶新增節點

void input(struct node * phead, int val)

phead->plater = newnode;

newnode->pformer = phead;

newnode->plater = null;

newnode->data = val;}

void output(struct node * phead)

//當前乙個元素不為空時輸出,過濾頭結點

while(phead->pformer != 0)

}

輸出乙個數列的逆序數

1,這個問題演算法導論講歸併排序時,提到過。找到乙個實現 思路還是蠻清晰的。核心 對於兩個有序序列,找逆序對,遍歷一次即可。2,實現 include include using namespace std int inv int data,int n ret j tmp i j data i 不是逆...

逆序對數列

題目描述 對於乙個數列,如果有ia j 那麼我們稱a i 與a j 為一對逆序對數。若對於任意乙個由1 n自然數組成的數列,可以很容易求出有多少個逆序對數。詢問逆序對數為k的這樣自然數數列到底有多少個。輸入描述 第一行為兩個整數n k。輸出描述 寫入乙個整數,表示符合條件的數列個數,由於這個數可能很...

求數列的逆序數

在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。123 4567 891011 1213 1415 1617 1819 2021 2223 2425 2627 28ll a 500005 tem 50000...