リンクリストとして実装されているスタックの最初の3要素をロールしようとしています。たとえば、スタックが次のようになっていたとします。1 2 3 4 5ロール関数の後には次のようになります:3 1 2 4 5. 3番目の項目はスタックの先頭に移動し、それ以外はすべてスタックの1つ下の位置にシフトされます。ここで私は、ロール機能のために演奏されているされているもの:リンクリストを使用して構築されたスタック内の項目を移動するCプログラム
// roll function rolls the top 3 numbers on the stack
struct item *roll(struct item *top){
struct item *cur = top;
struct item *prev = NULL;
int i = 0;
// get cur and prev to point to proper positions in linked list
for(i = 0; i < 3; i++){
prev = cur;
cur = cur->next;
}
// roll the linked list
prev->next = cur->next;
cur->next = top;
top = cur;
return top;
}
あなたのコードに問題は何ですか? – Sniper
質問をするのを忘れました。 –
私はそれを実行すると正しく動作しません。結果は同じ順序でリンクされたリストですが、最後の項目が欠落しています。私はどこが間違っているかもしれないかについてのいくつかの指針を欲しいです。 – derek