Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 22:47

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C] Verkette Liste?!

Discussion on [C] Verkette Liste?! within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
[C] Verkette Liste?!

Hey,

ich schreibe demnächst eine Klausur und wollte nochmal verkettete Listen wiederholen.

Da das alles nicht geklappt hat irgendwie, hab ichs zum testen grad mal auf absolute Minimum gekürtzt.

Ich wollte eine 5 in die Liste schreiben und das einfach nur ausgeben, also:
PHP Code:
struct knoten{
int data;
struct knoten *next
}

void main(){
struct knoten *new = malloc(sizeof(struct knoten));
new->
data=5;
printf("%d", new->data);

Soo. Ich sehe im Debugger auch, dass er eine 5 reinschreibt.
Allerdings, klappt die Ausgabe garnicht.
Er gibt immer 0.00000 aus ...

Vllt kann mir jemand sagen, was ich da falsch mache.


Grüße
Belur is offline  
Old 01/29/2014, 11:54   #2
 
​Tension's Avatar
 
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
Du versuchst ja auch einen Integer als Float auszugeben.
ersetze einfach das %f durch %d.
​Tension is offline  
Thanks
1 User
Old 01/29/2014, 12:06   #3
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
Ja blöder Fehler, danke das klappt schonmal.
Jetzt wollte ich das langsam erweitern:

PHP Code:
void einfuegen(struct knoten *tempint data){
    if(
temp!=NULL){
    
struct knoten *new = malloc(sizeof(struct knoten));
    new->
data data;
    new->
next temp->next;
    
temp->next= new;
    
temp=new;
    }else{
    
struct knoten *new = malloc(sizeof(struct knoten));
    new->
data data;
    new->
next NULL;
    
temp=new;
    
start = new;
    }


}
int main(){
    
struct knoten *temp;
    
temp=NULL;

einfuegen(&temp5);
printf("%d"temp->data);

Allerdings passiert einfach garnichts...

Ich hab mir das so gedacht, dass ich überprüfe ob temp NULL ist oder nicht.
In diesem Fall ja jetzt Ja, also ist die Liste leer.

Dann füge ich data etc ein und setzt start und temp eben aufs erste Element.
Dann müsste ich temp eigentlich ausgeben können(?!), was ja jetzt nicht klappt


Im Debugger sehe ich auch, dass temp die richtige Adresse von "new" übernimmt. Aber sobald ich wieder in die main springe zum printf(), wird temp auf einmal wieder "0x0"
Belur is offline  
Old 01/29/2014, 14:00   #4



 
+Yazzn's Avatar
 
elite*gold: 420
Join Date: Jan 2012
Posts: 1,082
Received Thanks: 1,000
void main() entspricht nicht dem C Standard.
new ist in C++ reserviert, verwende new_node.

Sowas in der Art ist da schon um einiges schöner:
Code:
typedef struct node_t
{
	int data;
	struct node_t *next;
} node;

node *add_node(node *current, int data)
{
	node *new_node = (node *)malloc(sizeof(node));
	new_node->data = data;
	new_node->next = NULL;
	if (current)
	{
		current->next = new_node;
	}
	return new_node;
}

int main()
{
	node *head = add_node(NULL, 1);
	node *current = head;
	current = add_node(current, 2);
	current = add_node(current, 3);
	current = add_node(current, 4);
	
	for (node *i = head; i; i = i->next)
	{
		printf("%d\n", i->data);
	}
}
Aufgebaut auf diesem Post: c - is this linkedlist code a good practice? - Stack Overflow
+Yazzn is offline  
Thanks
1 User
Old 01/29/2014, 14:44   #5
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
Danke schonmal, sieht echt ziemlich gut aus, wobei ich mir nicht vorstellen kann, dass die for-Schleife so funktioniert in C

Hatte das jetzt nochmal anders versucht:

PHP Code:
void einfuegen(struct daten*anfangstruct daten*neu){

        
struct daten *temp anfang;
        while(
laenge(temp)>0){
            
temp temp->next;
        }

        
temp->nextneu;
}

int main(void) {

    
    
struct daten anfang;
    
anfang.zahl 1;
    
anfang.next NULL;
    
struct daten *temp;
    
int i;
    for(
210i++) {
            
temp malloc(sizeof(struct daten));
            
temp->zahl i;
            
temp->next NULL;

            
einfuegen(&anfangtemp);
        }
   
ausgabe(&anfang);
    return 
0;

Wider Erwartens läuft das so schon, obwohl ich mir das nicht so ganz erklären kann.
Ich hätte jetzt erstmal damit gerechnet, dass nur das erste eingefügt wird.
Mich wunderts, dass ich nicht für jedes Element, dass ich einfüge, einen neuen struct erstellen muss wieder.

Hatte ja einmal dieses
"struct daten *temp" aber in der While-Schleife und einfuegen methode muss ich selbst für ein neues Element, nicht wieder einen neuen struct erstellen irgendwie. Also das

"struct daten *temp" war ja einmalig.

Kann mirs nicht so ganz erklären wie das läuft ;/
Belur is offline  
Reply


Similar Threads Similar Threads
Verkaufe eine Ab liste und schenke eine liste !!!
11/09/2013 - Fifa Trading - 12 Replies
Ich hab hir eine liste die zwischen 40k-50k macht eine liste wird verschenkt an eine person die es hir dan posten kann ob die liste das bringt was versprochen wird und eine liste wird verkauft . ps3 aso die person muss trusted sein in meine augen
Suche Xbox360 100 K liste / PS3 80k Liste
11/01/2013 - Fifa Trading - 0 Replies
Suche Listen die auf der Xbox mind 100k machen oder auf der Ps mind 80k machen Zahlen tu ich via Coins/PSC/AMAZAONGUTSCHEIN/PAYPAL falls ihr Geld von mir first sehen wollt, will ich referenzen sehen ( belege das ihr schon mehrfach erfolgreich listen verkauft habt ) ansonsten gebt ihr first, sehe ich das die Liste halbwegs seriös ist und nicht mal eben 5 Spieler auf Futhead beinhaltet bekommt ihr das Geld/Die Münzen
(s)AB Liste
10/23/2013 - Fifa - 3 Replies
Moinsen Leute, nach unzähligem Lesen des Threads wie man eine gewinnbringende Liste erstellt, macht mein AB nur Minus und daher bin ich jetzt auf euch angewiesen. Wer mir eine gute AB Liste erstellen kann im CSV Format, werde ich den eine Stunde lang testen, falls er tut was er tun soll. Bekommt derjenige, 50% der Einnahmen oder in Coins je nach dem. Gruß
Suche Proxy Listen, Vornamen Liste, Nachnamen Liste, e-mail listen
11/24/2012 - elite*gold Trading - 6 Replies
Hi topic regelt postet einfachh treasuren und schreibt wieviele das sind bei denn e-mails bitte e-mail:pw die proxies das ich sie alle gleich verwenden kann
[Liste]Die Große Hitfaker Proxy Liste [Selbstgemacht]
04/08/2010 - Metin2 PServer Guides & Strategies - 5 Replies
Nichts falsche section sry Kan das jmd Löschen ? Wäre net



All times are GMT +1. The time now is 22:48.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.