リストの先頭にノードを挿入する必要がありますが、どうすればいいですか?このコードでリストの先頭にノードを挿入する
:
while(tmp!=NULL){
printf("__________");
printf("\nCodigo: %d\n",tmp->code);
printf("Nombre: %s\n",tmp->name);
printf("Apellido: %s\n",tmp->last);
tmp = tmp->next;
};
iがリストを印刷し、これは私が見るものである。
Codigo:3
ノンブル:第
Apellido:ノード
Codigo:2
ノンブル:SECC
Apellido:ノード
Codigo:1
ノンブル:最初
Apellido:ノード
ので、私はbeginnigに何かを挿入する場合私は見るべきである
Codigo:3
ノンブル:第
Apellido:ノード
Codigo:2
ノンブル:SECC
Apellido:ノード
Codigo:1
ノンブル:最初
Apellido:ノード
Codigo:4
ノンブル:第
Apellido:私はそれを行う方法ノード
?私はこれを試してみました:
tmp_aux = lista;// creating an aux list
while(tmp_aux->next!=NULL){
tmp_aux->next = tmp_aux;
}; // i used this becouse the last printed (up) is the first node
new_aux = (struct nodo*) malloc(1*sizeof(struct nodo));
printf("ingrese el codigo: ");
scanf("%d",&(*new_aux).code);
printf("ingrese el nombre: ");
scanf("%s",&(*new_aux).name);
printf("ingrese el apellido: ");
scanf("%s",&(*new_aux).last);
new_aux->next = tmp_aux;// then i put the aux on the next of my new node
lista = new_aux;// and make my list the new one
個人的に
ループの先頭で 'tmp_aux'がnullでないと仮定すると、それは決して終了しません。 'tmp_aux-> next = tmp_aux'はリストをトラバースせず、ただちに値を再割り当てします。おそらく 'tmp_aux = tmp_aux-> next'をしたかったでしょうか? –
私はそれを試みましたが、リストの最後に最初のノードを印刷しました。私は最後のノードをスキャンするのが底にあるべきだと思います...そうですか? –
この例では、リストの最後に挿入されていない部分が先頭に挿入されています。それが最初にあった場合は、新しいノードが最後に印刷されませんでしたか?あなたは本当に欲しいですか?リストの始めか終わりですか? – kaylum