リンクリストとして表される番号に1を追加しますか?
ここでは、リンクリストに格納されている番号に1を追加する方法を説明します。リンクリストには、数字の各桁が格納されます。番号が512の場合、以下のように保存されます-
512 = (5)-->(1)-->(2)-->NULL
リストをインクリメント関数に提供しています。 1を追加すると、別のリストが返されます。ここでは、C++STLリンクリストを使用しています。より良いアイデアを賭けるためのアルゴリズムを見てみましょう。
アルゴリズム
incrementList(l1)
Begin carry := 1 res := an empty list for each node n from l1, scan from last to first, do item := (l1.item + carry) mod 10 insert item at the beginning of res carry := (l1.item + carry) / 10 done if carry is not 0, then add carry at the beginning of res end if return res End
例
#include<iostream>
#include<list>
using namespace std;
list<int> incListNum(list<int> l1){
list<int>::reverse_iterator it1 = l1.rbegin();
list<int> result;
int carry = 1; //this 1 will be added
while(it1 != l1.rend()){
result.push_front((*it1 + carry) % 10);
carry = (*it1 + carry) / 10;
it1++;
}
if(carry != 0){
result.push_front(carry);
}
return result;
}
list<int> numToList(int n){
list<int> numList;
while(n != 0){
numList.push_front(n % 10);
n /= 10;
}
return numList;
}
void displayListNum(list<int> numList){
for(list<int>::iterator it = numList.begin(); it != numList.end();
it++){
cout<<*it;
}
cout << endl;
}
int main() {
int n1 = 9999;
list<int> n1_list = numToList(n1);
list<int> res = incListNum(n1_list);
cout << "The number: "; displayListNum(n1_list);
cout << "Result: "; displayListNum(res);
} 出力
The number: 9999 Result: 10000
-
Cのリンクリストを使用した優先キュー
データと優先度は整数値として与えられ、タスクは与えられた優先度に従ってリンクリストを作成し、結果を表示することです。 キューはFIFOデータ構造であり、最初に挿入された要素が最初に削除されます。優先度付きキューは、優先度に応じて要素を挿入または削除できるキューの一種です。キュー、スタック、またはリンクリストのデータ構造を使用して実装できます。優先キューは、次のルールに従って実装されます- 優先度が最も高いデータまたは要素は、優先度が最も低いデータまたは要素の前に実行されます。 2つの要素の優先度が、順番に実行される要素と同じである場合、それらはリストに追加されます。 優先度付きキュー
-
Excelで電話番号リストに国または市外局番を追加する方法
電話番号のリストは、MicrosoftExcelエディターで非常に一般的なケースです。固定電話と外国の電話番号の場合、国番号を追加することが重要です。そうしないと、発信者は番号を正しくダイヤルできなくなります。この投稿では、Excelの電話番号リストに国または市外局番を追加する方法を紹介します。 Excelの電話番号リストに国または市外局番を追加する Excelの電話番号リストに国/市外局番を追加するには、単純なプレフィックス式を使用できますが、これは、国/市外局番がリスト全体のすべての電話番号で同じである場合に有効です。 したがって、国/市外局番をプレフィックスとして追加する前に、