I've written code as below and have a problem. I want to add task names to my list but when I enter different names, it shows me the lastest name I entered for each element in list. How can I correct? My codes has been written in in Turkish language but I am sure that you understand. (Also I shared the running time picture)
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct eleman // element
{
char *gorevAdi; // task name
struct eleman *ileri; // next
};
typedef struct eleman Eleman;
typedef Eleman *Elemanptr;
Elemanptr yeni_eleman(char *gorevAdi) // new element
{
Elemanptr eleman = (Eleman *)malloc(sizeof(Eleman));
eleman->gorevAdi = gorevAdi;
eleman->ileri = NULL;
return eleman;
}
struct cikin // stack
{
Elemanptr ust; // top
};
typedef struct cikin Cikin;
typedef Cikin *Cikinptr;
Cikinptr yeni_cikin() // new stack
{
Cikinptr cikin = (Cikin *)malloc(sizeof(Cikin));
cikin->ust = NULL;
return cikin;
}
Elemanptr ust(Cikinptr c) // top
{
return c->ust;
}
int cikin_bos(Cikinptr c) // empty stack
{
if (c->ust == NULL)
{
return 1;
}
else
{
return 0;
}
}
void cikin_ekle(Cikinptr c, Elemanptr yeni) // add stack
{
yeni->ileri = c->ust;
c->ust = yeni;
}
Elemanptr cikin_sil(Cikinptr c) // delete stack
{
Elemanptr e = c->ust;
if (!cikin_bos(c))
{
c->ust = c->ust->ileri;
}
return e;
}
void cikin_yaz(Cikinptr c) // write stack
{
printf("\n\n*** Stack'te Bulunan Gorevler ***\n");
Elemanptr p;
int sayac = 0;
while (!cikin_bos(c))
{
p = cikin_sil(c);
sayac++;
printf("\nStack d. gorevi: s\n", sayac, p->gorevAdi);
}
}
int main()
{
int devam; // continue
char gorevIsmi[32]; // task name
bool dogruMu = true; // isTrue
Cikinptr test = yeni_cikin();
printf("-- Gorev eklemeyi sonlandirmak icin \"157\" giriniz --\n"); // to stop program enter 157
do
{
printf("\nStack'e eklenecek bir gorev ismi giriniz: "); // enter task name
scanf("s", gorevIsmi);
Elemanptr yeni = yeni_eleman(gorevIsmi);
cikin_ekle(test, yeni);
printf("\nDevam durumu giriniz (Rakam): ");
scanf("d", &devam);
if (devam == 157)
{
dogruMu = false;
}
} while (dogruMu == true);
cikin_yaz(test);
}