二重リンクリストの最初の値のみを出力し、プログラムがクラッシュするのはなぜですか

BATMAN_X

二重にリンクされたリストを作成してその値を出力しようとしていますが、出力に最初の値のみが表示され、プログラム全体がクラッシュします。

コードのどこに問題があるのか​​理解できません。

入力

3

1 2 3

期待される出力

1 2 3

現在の出力

1

#include<iostream>
#include<stdlib.h>
using namespace std;
class node                                  //declation of node
{
public:
    int data;
    node *next;
    node *prev;
};
node *makenode(node *head,int val)          //function to create node
{
    node *newnode=new node;
    node *temp;
    newnode->data=val;
    newnode->next=0;
    newnode->prev=0;
    if(head==0) temp=head=newnode;

    else
    {
        temp->next=newnode;
        newnode->prev=temp;
        temp=newnode;
    }
    return head;
}
void display(node *head)                     //display function
{
    system("cls");                          //clearing output screen
    while(head!=0)
    {
        cout<<head->data<<"  ";
        head=head->next;
    }
}
int main()
{
    node *head;
    head=0;
    int val;
    int s;                                   //size of list
    cout<<"ENTER THE SIZE OF LIST";
    cin>>s;
    system("cls");
    for(int i=0;i<s;i++)
    {
        cout<<"ENTER THE "<<i+1<<" VALUE\n";
        cin>>val;
        head=makenode(head,val);             //calling makenode and putting value
    }
    display(head);                           //printing value
    return 0;

}
グラントシングルトン

実際には何もリンクしていません。この行:if(head==0) temp=head=newnode;リンクリストに値が含まれている唯一の理由です。最初の値はheadをそれに等しく設定し、headを印刷するとその値を取得します。リンクリストを適切に実行するには、ヘッドポインタテールポインタが必要です。ヘッドはリストの最初の要素を指し、テールは最後の要素を指します。リストの最後に要素を追加するときは、tailを使用して最後の要素を見つけ、それにリンクします。リンクリストを頭と尾をカプセル化できるクラスにするのが最も簡単です。

struct Node {
public:
    int data;
    node *next;
    node *prev;
    Node(int data) : data(data), next(nullptr), prev(nullptr) {} // constructor
};

class LinkedList {
private:
    Node* head;
    Node* tail;

public:
    LinkedList() { head = tail = nullptr; }

    // This function adds a node to the end of the linked list
    void add(int data) {
        Node* newNode = new Node(data);
        if (head == nullptr) { // the list is empty
            head = newNode;
            tail = newNode;
        }
        else { // the list is not empty
            tail->next = newNode; // point the last element to the new node
            newNode->prev = tail;  // point the new element to the prev
            tail = tail->next;  // point the tail to the new node
        }
    }
};

int main() {

  LinkedList lList;
  lList.add(1);
  lList.add(2);
  // etc...

  return 0;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

「破損した二重リンクリスト」エラーが発生するのはなぜですか?

分類Dev

二重リンクリストが以前のリンクを削除するのはなぜですか?

分類Dev

Cでリストを実装しているときに、プログラムがクラッシュするのはなぜですか?

分類Dev

プログラムが循環リンクリストの最初の要素の後にノードを挿入しているのはなぜですか?

分類Dev

リストビューに多くの画像を追加すると、プログラムがクラッシュするのはなぜですか?

分類Dev

プログラムは、二重にリンクされたリストから単一のデータを読み取ることができません

分類Dev

このアセンブリプログラムがクラッシュするのはなぜですか(再アセンブルされたndisasm出力)?

分類Dev

javaリンクリスト。このプログラムは8を出力しません。なぜですか?

分類Dev

Dequeの代わりにLRUキャッシュに二重リンクリストとHashMapを使用するのはなぜですか?

分類Dev

このHaskellプログラムがバックスラッシュを作成するのはなぜですか?

分類Dev

プログラム内のリストが予期しない出力を表示するのはなぜですか?

分類Dev

シェルスクリプトが出力の最初の数値を切り捨てるのはなぜですか?

分類Dev

リンクリストプログラムがSIGSEVを提供するのはなぜですか?

分類Dev

リンクリストプログラムがSIGSEVを提供するのはなぜですか?

分類Dev

switchステートメントがC ++プログラムでアスタリスクを正しく出力しないのはなぜですか?

分類Dev

main関数にステートメントを追加すると、Cプログラムがクラッシュするのはなぜですか?

分類Dev

このbashスクリプトの抜粋の二重ダッシュは何をしていますか

分類Dev

二重にリンクされたリストコピーコンストラクタとプログラムのクラッシュ

分類Dev

二重にリンクされたリストイテレータがnullを出力するのはなぜですか?

分類Dev

アプリケーションメニューが空白になるのはなぜですか(Windows 10のタスクバーでプログラムを右クリックします)?

分類Dev

バッチスクリプトが最初の行として「MissingOperator」を出力するのはなぜですか?

分類Dev

シェルスクリプトでこの変数を定義するときに二重引用符が必要なのはなぜですか?

分類Dev

Pythonスクリプトの出力をパイピングするときにのみUnicodeエラーが発生するのはなぜですか?

分類Dev

モジュールを使用したRubyクラスの名前空間:モジュールブロックではなく二重コロンでNameErrorが発生するのはなぜですか?

分類Dev

プログラムが応答してクラッシュしなくなるのはなぜですか?

分類Dev

Swiftでプログラムでアプリのスクリーンショットを撮ろうとすると、スクリーンショットが白く表示されるのはなぜですか?

分類Dev

プログラムが配列の最後のオブジェクト値のみを出力するのはなぜですか?

分類Dev

この迂回機能がプログラムをクラッシュさせるのはなぜですか?

分類Dev

マルチプロセッシングの特定のシナリオで共有リストにアクセスしているときにのみ「パイプの破損」エラーが発生するのはなぜですか?

Related 関連記事

  1. 1

    「破損した二重リンクリスト」エラーが発生するのはなぜですか?

  2. 2

    二重リンクリストが以前のリンクを削除するのはなぜですか?

  3. 3

    Cでリストを実装しているときに、プログラムがクラッシュするのはなぜですか?

  4. 4

    プログラムが循環リンクリストの最初の要素の後にノードを挿入しているのはなぜですか?

  5. 5

    リストビューに多くの画像を追加すると、プログラムがクラッシュするのはなぜですか?

  6. 6

    プログラムは、二重にリンクされたリストから単一のデータを読み取ることができません

  7. 7

    このアセンブリプログラムがクラッシュするのはなぜですか(再アセンブルされたndisasm出力)?

  8. 8

    javaリンクリスト。このプログラムは8を出力しません。なぜですか?

  9. 9

    Dequeの代わりにLRUキャッシュに二重リンクリストとHashMapを使用するのはなぜですか?

  10. 10

    このHaskellプログラムがバックスラッシュを作成するのはなぜですか?

  11. 11

    プログラム内のリストが予期しない出力を表示するのはなぜですか?

  12. 12

    シェルスクリプトが出力の最初の数値を切り捨てるのはなぜですか?

  13. 13

    リンクリストプログラムがSIGSEVを提供するのはなぜですか?

  14. 14

    リンクリストプログラムがSIGSEVを提供するのはなぜですか?

  15. 15

    switchステートメントがC ++プログラムでアスタリスクを正しく出力しないのはなぜですか?

  16. 16

    main関数にステートメントを追加すると、Cプログラムがクラッシュするのはなぜですか?

  17. 17

    このbashスクリプトの抜粋の二重ダッシュは何をしていますか

  18. 18

    二重にリンクされたリストコピーコンストラクタとプログラムのクラッシュ

  19. 19

    二重にリンクされたリストイテレータがnullを出力するのはなぜですか?

  20. 20

    アプリケーションメニューが空白になるのはなぜですか(Windows 10のタスクバーでプログラムを右クリックします)?

  21. 21

    バッチスクリプトが最初の行として「MissingOperator」を出力するのはなぜですか?

  22. 22

    シェルスクリプトでこの変数を定義するときに二重引用符が必要なのはなぜですか?

  23. 23

    Pythonスクリプトの出力をパイピングするときにのみUnicodeエラーが発生するのはなぜですか?

  24. 24

    モジュールを使用したRubyクラスの名前空間:モジュールブロックではなく二重コロンでNameErrorが発生するのはなぜですか?

  25. 25

    プログラムが応答してクラッシュしなくなるのはなぜですか?

  26. 26

    Swiftでプログラムでアプリのスクリーンショットを撮ろうとすると、スクリーンショットが白く表示されるのはなぜですか?

  27. 27

    プログラムが配列の最後のオブジェクト値のみを出力するのはなぜですか?

  28. 28

    この迂回機能がプログラムをクラッシュさせるのはなぜですか?

  29. 29

    マルチプロセッシングの特定のシナリオで共有リストにアクセスしているときにのみ「パイプの破損」エラーが発生するのはなぜですか?

ホットタグ

アーカイブ