リストの最後の位置の後に要素を挿入しようとしています。その結果、関数によって作成された点がリストに含まれていますが、必要ではありません。リストの最後の要素として要素を挿入する
#include <stdio.h>
#include <stdlib.h>
typedef int DATA;
struct lista {
DATA info;
struct lista *urm;
};
typedef struct lista Lista,*LISTA;
LISTA newl();
LISTA inserare_in_fata(LISTA l,DATA x);
LISTA inserare_la_sfarsit(LISTA l,DATA x);
int main()
{
int x;
FILE *f;
LISTA l;
l=newl();
l=(LISTA)malloc(sizeof(Lista));
l->urm=NULL;
scanf("%d",&x);
l=inserare_in_fata(l,x); //insert a element in front of list
scanf("%d",&x);
l=inserare_la_sfarsit(l,x); // the function for insert as last element
//THE list after Running the program
printf("\n");
while(l->urm!=NULL)
{
printf("%d->",l->info);
l=l->urm;
}
printf("NULL");
}
LISTA newl()
{
return NULL;
}
LISTA inserare_la_sfarsit(LISTA l,DATA x)
{
LISTA w;
LISTA t=(LISTA)malloc(sizeof(Lista));
t->info=x;
if(l==NULL)
{
l->info=x;
return l;
}
else {
w=l;
while(w->urm!=NULL)
{
w=w->urm;
}
w->urm=t;
t->urm=NULL;
return l;
}
}
LISTA inserare_in_fata(LISTA l,DATA x)
{
LISTA f;
f=(LISTA)malloc(sizeof(Lista));
f->info=x;
if(l==NULL)
{
l->info=x;
return l;
}
else{
f->urm=l;
return f;
}
}
挿入された番号は、最初の30個と最後の10個は挿入に問題があります。
結果:http://uploadimage.ro/1PS0/Sper_ca_e_buna.jpg
私は質問を更新しましたが、実行後も同じ結果になりました。 –
@CatalinZambalicあなたは間違った条件で、間違った場所で初期化します。ダミー 'l'ノードを割り当てた直後に、' main'関数でそれを行う必要があります。 –
私はメニューを使用しています。私はすべてのメニューに機能を使用しています。これはなぜ私がそれを行うための関数を使うのかということです。最初の要素は、ユーザーの好みによって選択されたかったのですが、私は最初の要素に対して関数が同じことをしたことを知っています。私は、if(l == NULL)の関数をinserare_in_fataとinserare_la_sfarsitのオプションに入れてメニューを作成しましたが、それでも同じ結果が出ません。 –