stos zawierający listy

0

Witam! Chciałbym zaimplementować stos, zawierający listy, bez używania biblioteki STL. Mam podstawowe struktury: listę i stos (na liście jednokierunkowej, przechowuje wskaźnik na listę). Zrobiłem również funkcję dodającą dane do listy i wyświetlającą je, jednak nie mogę sobie poradzić z wrzucaniem list na stos. Czy ktoś mógłby pomóc?

0

Co znaczy wrzucaniem list na stos?
Wszystko zależy jak to sobie zorganizowałeś.
Najprostsza metoda: napisz osobno listę i osobno stos, a potem listę wstawiasz jako składową węzła stosu i już masz.

0

Mam zrobione tak jak napisałeś, jednak nadal mam problem z dodawaniem nowej listy na szczyt stosu. Podam fragment kodu, może ktoś pomoże mi z funkcją push ;)

1

Polecam następująca strukturę danych:

struct listnode
  {
   // tu dane np znak
   char Z;
   listnode *next;
  };

struct list
  {
   listnode *first,*last;
  };

struct stacknode
  {
   list L;
   stacknode *next;
  };

struct stack
  {
   stacknode *first;
  };
0

Dzięki za pomoc, wygląda dosyć skomplikowanie :) Zrobiłem funkcję dodającą element do listy na razie, ale też coś nie do końca. Gdybyś mógł spojrzeć i podpowiedzieć, co robię źle:

 void add(listnode *list,int a)
{
    listnode *ptr; 
    ptr = new listnode;
    ptr->znak = a;
    ptr->next = list;
    //tu powinno coś być, ale nie mam pomysłu (czyt. mój pomysł nie działa)
}
0
void add(list &L,int a)
  {
   listnode *ptr=new listnode;
   ptr->znak=a;
   ptr->next=0;
   L.last=(L.last?L.last->next:L.first)=ptr;
  }

Tak a propos, skoro używasz C++ (new) to czemu robisz to na strukturach a nie jak to się robi w C++ na klasach?

1
void push(stack &S,list &L)
  {
   stacknode *ptr=new stacknode;
   ptr->L.first=ptr->L.last=0;
   for(listnode *i=L.first;i;i=i->next) add(ptr->L,i->znak);
   ptr->next=S.first;
   S.first=ptr;
  }
0

Ostatnio bardzo modne zrobiły się zadania z listami. Już czwarte widzę (napisane przez różnych użytkowników, z różnym kodem, tylko treść ta sama).

Gdzie się uczycie? Mogę się założyć, że pozostałe osoby są z Twojego roku w tej samej uczelni.

1 użytkowników online, w tym zalogowanych: 0, gości: 1