Witam szanowni forumowicze. Mam jeden problem. Napisałem dwie funkcje pracujące na stosie czyli: jedna usuwa ze stosu druga dodaje. Problem w tym że nie potrafię napisać funkcji kopiującej stos, tzn: tworzącej jego kopię. Liczę na pomoc jeśli to możliwe. Oto kod.
#pragma hdrstop
#include <stdio.h>
#include<stdlib.h>
struct el
{
int klucz;
struct el *nast;
};
typedef struct el elListy;
typedef elListy *lista;
//funkcja dodajoaca na stos
void dodaj(lista *l,int k)
{
lista element;
element=(lista)malloc(sizeof(elListy));
element->klucz=k;
element->nast=*l;
*l=element;
}
//funkcja usuwajaca ze stosu
int usun( lista *l) {
lista p;
int k;
if (*l!=0){
p=*l;
k=(*l)->klucz;
*l=(*l)->nast;
free(p);
p=0;
return k;
}
return -1;
}
//funkcja pokazujaca stan stosu
void wyswietlall(lista l)
{
if (l==NULL)
{
printf("Brak elementow \n");
}
else
{
do {
printf("%d\n",l->klucz);
l=l->nast;
}
while (l!=NULL);
}
}
//glowny program
int main(int argc, char* argv[])
{
int dec;
lista li;
li=NULL;
printf("Dodawanie na stos liczb 45 55 65\n");
dodaj(&li,45);
dodaj(&li,55);
dodaj(&li,65);
wyswietlall(li);
printf("---------------------\n");
printf("Usuwanie ze stosu....\n");
usun(&li);
wyswietlall(li);
printf("Usuwanie ze stosu....\n");
usun(&li);
wyswietlall(li);
printf("Dodawanie na stos liczb 445 555 655\n");
dodaj(&li,445);
dodaj(&li,555);
dodaj(&li,655);
wyswietlall(li);
getch();
return 0;
}
//---------------------------------------------------------------------------