將一串數字順序後移

2021-10-07 00:09:54 字數 1008 閱讀 2438

這道題主要是程式設計邏輯的訓練。涉及到陣列、指標的知識點,本道題目也能很好的表達出選用不同的資料結構,對同一道題目會有完全不同的解題思路,程式設計複雜度也會有很大的差別。

方法一:採用陣列資料結構儲存資料。思路:①使用乙個臨時陣列,把原陣列中的後m個數字先複製到這個新建的陣列中,再把原陣列中的元素向後移動m個位置,最後把臨時陣列中的元素複製到原陣列的開頭位置。②使用乙個和原陣列長度一樣的臨時陣列,將原陣列的後m個數字複製到臨時陣列的前m位,然後再把原陣列的剩餘的數字複製到臨時陣列的後面,然後返回臨時陣列。

值得注意的是思路①②的臨時陣列空間大小是不一樣的,程式設計上略有區別。還要注意陣列下標的計算,這點很容易出錯。

#includevoid shift(int *a,int n,int m)

node;

int main()else

} //找到第(n-m)位置的前驅節點。

scanf("%d",&m);

i=0;

p = head;

while( i++next;

} //注意這幾個元素的交換。是實現這個題目的核心所在

//最後m個元素的首元素作為鏈頭,原煉表首節點元素鏈結到原煉表尾結點。這樣就實現了後移

tail->next = head;

head = p->next;

tail = p;

tail->next = null;

//輸出處理後的數

p = head;

while(p)

printf("\n");

return 0;

}

程式執行結果示意圖:

從上面的兩種不同的方法解決同一問題我們可以看到,不同資料結構的選擇,對程式設計思想的影響很大,資料結構的巧妙選擇有時會大大的簡化程式設計邏輯上的理解。同時,不同的資料結構還會對程式演算法的時間複雜度和空間複雜度形成很大的差異。

算一串數字的entropy 數字

醫生,你確定我沒事嗎?要不要再做個檢查,核磁共振什麼的?金陵市第一腦科醫院內,李宇緊攥著醫生的雙手,滿臉緊張地問道。真沒什麼事兒,開點藥吃吃就行了。可能是最近壓力過大,回去注意休息,多喝喝開水,過一陣子就沒事了。中年醫生低著頭寫病歷,看也不看李宇,自顧自地說道。可是 李宇剛要再說些什麼,就被醫生塞過...

將一串數字轉為大寫人民幣形式

function tochinese str 引數不為空時 str parsefloat str 最大數字 if str maxnum 如果傳的數字為0 if str 0 如果傳的數字不為0 str str.tostring 判斷str是否有小數點 if str.indexof 1 else 整數部...

小D的一串數字(簡單 )

小d的一串數字 time limit 1000 ms memory limit 65536 kib problem description 小d在紙上隨便寫了兩串數字,23333333 0123456789 第乙個串中含有7個重複的相鄰的數字,第二個串中不含相鄰的重複的數字。小d喜歡第一類串,但是他...