LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 12-17-2015, 01:36 PM   #1
NoWeDoR
Member
 
Registered: Jun 2015
Posts: 32

Rep: Reputation: Disabled
An issue in Stacks relate Linked List


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);
}
Attached Thumbnails
Click image for larger version

Name:	Untitled.png
Views:	28
Size:	20.6 KB
ID:	20319  

Last edited by NoWeDoR; 12-17-2015 at 02:00 PM.
 
Old 12-17-2015, 10:30 PM   #2
NevemTeve
Senior Member
 
Registered: Oct 2011
Location: Budapest
Distribution: Debian/GNU/Linux, AIX
Posts: 4,863
Blog Entries: 1

Rep: Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869Reputation: 1869
Code:
Elemanptr yeni_eleman(const char *gorevAdi)  // new element
{
	Elemanptr eleman = (Eleman *)malloc(sizeof(Eleman));
	eleman->gorevAdi = strdup (gorevAdi);
	eleman->ileri = NULL;
	return eleman;
}
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Linked list C exvor Programming 14 06-22-2007 06:06 PM
linked list traversal Deepak Inbasekaran Programming 3 05-16-2007 10:33 PM
Linked list manas_sem Programming 3 12-21-2006 01:53 AM
C linked list exvor Programming 4 04-28-2006 05:25 AM
linked list + c dilberim82 Programming 5 05-04-2005 11:48 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 03:17 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration