私はC++
を初めて使用しているので、私のコードは最適ではありませんが、現時点では動作させたいだけです。 linked list
という2つの要素(1.と2.、2.と3.など)を比較するfunction
と、次の要素よりも小さい場合は、これら2つの要素の最初の要素を削除する必要があります。最後に、リストの編集者を表示する必要があります。私は何をしようとしているのかいくつかの例を見つけましたが、彼らは私を混乱させてしまい、私のケースに合わせて調整する方法がわかりません。 は、ここに私のコードです:リンクされたリスト内のポインタ
#include <iostream>
#include <cstdlib>
using namespace std;
struct elements {
int value;
elements * next;
};
void f (elements * & start){
if (start == NULL || start -> next == NULL) {
return;
}
elements * p = start, * prevvalue = NULL, * previous = NULL, * del, * before = NULL, * after = NULL;
int first = start -> value;
int second = 0;
for (; p != NULL; p = p -> next){
cout << p -> value << endl;
second = p -> value;
if (first < (p -> value)) {
before = prevvalue;
del = p;
previous = p;
p -> next = after -> next;
after -> next = p;
delete del;
}
first = second;
previous = prevvalue;
}
if (previous == NULL) start = start -> next;
else prevvalue -> next = start -> next;
}
int main(){
elements * start = NULL, * last = NULL, * input;
int count;
cout << "How many elmenets would you like to input? ";
cin >> count;
for (int i = 0; i < count; i++){
cout << "Please input " << i + 1 << ". element: ";
elements * input = new elements;
cin >> input -> value;
input -> next = NULL;
if (last != NULL) {
last -> next = input;
last = input;
}
else start = last = input;
}
f (start);
elements * p = start;
while (p != NULL) {
cout << p -> value << endl;
p = p -> next;
}
input = start;
while (start != NULL){
elements * temp = start;
start = start -> next;
delete temp;
}
return 0;
}
ありポインタと完全に間違って何かがありますので、それは働いていません。 誰かが自分のコードを編集して不要なものをすべて捨ててもらえますか? ありがとうございます!
のようないくつかのクリーンアップ何か? – UKMonkey
これは宿題ですか?もしそうでなければ、あなたはC++をしようとはしていませんが、C. – AntoineB
ですから、入力が1,2,3,4,5 - > resultが5なら、5,2,3,4,1 - > 541? – kalvis