PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kleines c-prog macht mist


Mr.Axion
2004-07-24, 14:23:33
#include "stdio.h"
#include "stdlib.h"

typedef struct l_node *list;
typedef struct l_node{int wert;
list next;
} l_node_type;

list Liste;

void append(list *l, int z)
{ list neu;

if(*l==NULL)
{
neu = (list)malloc(sizeof(l_node_type));
neu->wert=z;
neu->next=NULL;
*l=neu;
} else append(&(*l)->next, z);
}

void zeige_liste(list *b)
{
int x;
x=0;
x=(*b)->wert;
printf("'prozentzeichen'x");
}


int main()
{
append(&Liste, 5);
zeige_liste(&Liste);
return 0;
}

diese prog bringt leider nur 12ff80 auf den bildschirm... :-(
Was habe ich denn nu falsch gemacht? Is erkenntlich was das prog soll oder?
aslo append erzeugt notfalls ne liste und fügt z an.

Trap
2004-07-24, 14:49:01
Fällt dir in den 4 Zeilen zusammen was auf?

typedef struct l_node *list;
list Liste;
void append(list *l, int z);
append(&Liste, 5);

Mr.Axion
2004-07-24, 15:04:40
dass das & vor Liste zuviel ist...?

Mr.Axion
2004-07-24, 15:07:08
"Das muesste heissen printf("%d",x);" (anderes forum)

hab das gemacht und funzt... Das & ist doch richtig so... :-)

Mr.Axion
2004-07-24, 15:14:54
#include "stdio.h"
#include "stdlib.h"

typedef struct l_node *list;
typedef struct l_node{int wert;
list next;
} l_node_type;

list Liste;

void append(list *l, int z)
{ list neu;

if(*l==NULL)
{
neu = (list)malloc(sizeof(l_node_type));
neu->wert=z;
neu->next=NULL;
*l=neu;
} else append(&(*l)->next, z);
}
habe nu das daraus gemcht:

void zeige_liste(list *b)
{
int x;
x=0;
x=(*b)->wert;
printf("%d",x);
if (&(*b)->next != NULL) zeige_liste(&(*b)->next);
}


int main()
{
append(&Liste, 5);
append(&Liste, 6);
append(&Liste, 7);
zeige_liste(&Liste);
return 0;
}


funzt erstmal aber ne fehlermeldung von wegen speicher (kann read nicht ausführen da 0x00000...)kommt noch

Xmas
2004-07-24, 15:30:05
void zeige_liste(list b)
{
printf("%d",b->wert);
if (b->next != NULL) zeige_liste(b->next);
}


int main()
{
append(&Liste, 5);
append(&Liste, 6);
append(&Liste, 7);
zeige_liste(Liste);
return 0;
}