Linked list  – プログラミング – Home

通知
すべてクリア

Linked list 


C++初心者
 C++初心者
(@C 初心者)
ゲスト
結合: 21年前
投稿: 30
Topic starter  

Linked listを作ったのですが、表示がListの一番後ろから表示されます。
なぜでしょうか?
コードはこれです。

OS winXP
Visual C++

#include <iostream>
using namespace std;
struct NODE{
int data;
NODE *link;
};

struct List{
NODE *head;
int count;
};
void printList(List list);

int main(){
//リストの初期化
List list;
int array[] = {3,6,12,4,2};
list.head = NULL;

for(int i = 0 ; i < 5 ; i++){
//ノードの初期化
//ノードの初期化されたかチェック
NODE *pNew;
if(!(pNew = new NODE)){
return -1;
}
pNew->data = array[i];
pNew->link = list.head;
list.head = pNew;
list.count++;
}
printList(list);
return 0;
}
void printList(List list){
int nodeNo;
NODE *pWalk = list.head;

if(list.count == 0){
cout << Nothing in list.\n << endl;
}else{
cout << \ncontents of List << endl;
nodeNo=0;
while(pWalk){
cout << nodeNo << \t << pWalk->data << endl;
pWalk = pWalk->link;
nodeNo++;
}
}
cout << \nThere are << nodeNo << nodes in the list << endl;
}


引用解決済
トピックタグ
まきじ
 まきじ
(@まきじ)
ゲスト
結合: 20年前
投稿: 35
 

>list.head = pNew;

で常に、リストの最後が head になってるから。

head は最初だけ代入して、
以降は、一つ前を記憶する変数(pOld など)を用意して、
それの link に pNew を代入する。


返信引用
C++初心者
 C++初心者
(@C 初心者)
ゲスト
結合: 21年前
投稿: 30
Topic starter  

わかりました^-^
今からトライしてみます。
ありがとうございます。


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

>Listの一番後ろから表示されます。

そんなことないですよ、ちゃんとListの先頭から表示されています。

arrayと逆順になっているのは、
Listに要素を追加する時に、先頭に挿入しているからです。
つまり、Listにarrayと逆順になるように追加しているのです。


返信引用
C++初心者
 C++初心者
(@C 初心者)
ゲスト
結合: 21年前
投稿: 30
Topic starter  

>REE
では、どの用にプログラムを変えればよいですか?
表示する所が悪いんでしょうか?


返信引用
まきじ
 まきじ
(@まきじ)
ゲスト
結合: 20年前
投稿: 35
 

array[4]から追加していく。

あるいは、

>一つ前を記憶する変数(pOld など)を用意して、
>それの link に pNew を代入する。

の様な感じで、後ろへ繋げる様に変更。


返信引用
C++初心者
 C++初心者
(@C 初心者)
ゲスト
結合: 21年前
投稿: 30
Topic starter  

ためしてみます^-^


返信引用
C++初心者
 C++初心者
(@C 初心者)
ゲスト
結合: 21年前
投稿: 30
Topic starter  

forループのコンディションを変えてしまうとこのリストの意味が無いような気がするん
ですが^-^;
大丈夫なんでしょうか?


返信引用
まきじ
 まきじ
(@まきじ)
ゲスト
結合: 20年前
投稿: 35
 

>forループのコンディションを変えてしまうとこのリストの意味が無いような気がするん
ですが^-^;

どう意味が無いと思うのですか?
一応、リストは出来るので良いかと。

シックリこないのであれば、後ろに繋げる様に
変更すればどうでしょうか?


返信引用
C++初心者
 C++初心者
(@C 初心者)
ゲスト
結合: 21年前
投稿: 30
Topic starter  

もう一度考え直してみます。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました