私は自分でリンクリストプログラムを作成しようとしました。プログラムはエラーなしでコンパイルされましたが、正しい結果が得られません。
GCCとTURBO C++で試してみました。C++リンクリストプログラム最後のデータ項目をn回印刷
#include<iostream>
#include<cstdio>
using namespace std;
struct node
{
char *name;
node *link;
};
int main()
{
int n, i;
node *start = NULL, *newnode, *temp;
char nam[10];
cout<<"Enter number of people:";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"Enter name:";
fflush(stdin);
gets(nam);
if(start==NULL)
newnode = start = new node;
else
newnode = newnode->link = new node;
newnode->link = NULL;
newnode->name = nam;
}
cout<<"\n\tNames:";
temp = start;
while(temp!=NULL)
{
cout<<"\n"<<temp->name;
temp = temp->link;
}
delete newnode;
delete start;
delete temp;
return 0;
}
出力は次のようになります。
Output ScreenShot
Enter number of people:4
Enter name:qwerty
Enter name:uiop
Enter name:asdf
Enter name:zxcv
Names:
zxcv
zxcv
zxcv
zxcv
--------------------------------
Process exited after 15.85 seconds with return value 0
任意のキーを押して続行し。 。 。
(これはあなたの問題とは無関係です)が、技術的に呼び出す '入力専用Cでfflush'' FILE'ストリームは、* *未定義の動作です。第二に(そして無関係に)、決して決して***決して使用しないでください。これは長い間古くなってきており、CおよびC++標準の両方から削除されており、一般的に危険です!* –
あなたのデバッグセッションの結果であなたの投稿を編集してください。 Turbo C++とBorland C++には、優れたデバッガがあります。また、コードを一歩一歩進んでいくうちに、リストをダイアグラム(描画)することもできます。 –
問題については、 'std :: string'について知っていますか?これは問題を解決するためです(さらに、 'gets'よりも安全で機能的なものを使う必要があります)。ノード '名前'ポインタが指しているところを少し考えてみてください。 ***ノード 'name'のすべての***ポインタ... –