• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem ze zrozumieniem zadań

VPS Starter Arubacloud
0 głosów
390 wizyt
pytanie zadane 27 kwietnia 2019 w C i C++ przez Piotr Płatos Bywalec (2,380 p.)
Hej, czy tylko ja mam problem ze zrozumieniem tych zadań?

 

1. Stos w oparciu o listę jednokierunkową cykliczną

2. napisać funkcję tworzącą stos liczb o podanym rozmiarze

3. napisać funkcję, która podany stos o rozmiarze p rozłoży na n stosów oraz co najmniej 1 stos o nie więcej niż p musi zawierać 1 element, a liczba elementów w każdym z pozostałych stosów o rozmiarze >1 musi być unikalna

 

Najbardziej nurtuje mnie czemu ma służyć stos cykliczny.

2 odpowiedzi

+2 głosów
odpowiedź 28 kwietnia 2019 przez profesorek96 Szeryf (91,420 p.)
wybrane 28 kwietnia 2019 przez Piotr Płatos
 
Najlepsza
Stos to inaczej kolejka LIFO (Last in first out). Poprostu tworzysz cykliczną kolejke.
komentarz 28 kwietnia 2019 przez Piotr Płatos Bywalec (2,380 p.)
Dzięki wielkie za odpowiedź.

Czy wiesz również o co chodzi w zadaniu 3?
1
komentarz 28 kwietnia 2019 przez criss Mędrzec (172,590 p.)

co najmniej 1 stos o nie więcej niż p musi zawierać 1 element

Podejrzewam że zamiast 'o' miało być 'a'. Wtedy to ma sens 

komentarz 28 kwietnia 2019 przez Piotr Płatos Bywalec (2,380 p.)
Racja, wtedy ma to sens. Dzięki za pomoc.
0 głosów
odpowiedź 29 kwietnia 2019 przez Piotr Płatos Bywalec (2,380 p.)

Czy taka implementacja jest ok?
 

#include <iostream>

using namespace std;

const int MAXINT = -2147483647;

struct elem
{
  elem * next;
  int data;
};

void init(elem * & top)
{
  top = new elem;
  top->next=NULL;
}

int size(elem * top)
{
  int  c = 0;
  elem * p = top->next;

  if(p)
  do
  {
    c++;
    p = p->next;
  } while(p != top);
  return c;
}

bool empty(elem *top)
{
  return !top->next;
}

void push(elem * & top, int v)
{
  elem * p = new elem;
  p->data = v;
  if(top->next) p->next    = top->next;
  else     p->next          = top;
  top->next = p;
}

int pop(elem * & top)
{
  if(top->next)
  {
    elem * p = top->next;
    int v = p->data;
    if(p->next != top) top->next = p->next;
    else                top->next = NULL;
    delete p;
    return v;
  }
  return -MAXINT;
}

void clear(elem *top)
{
  while(top->next) pop(top);
}

void deleteStack(elem * & top)
{
  clear(top);
  delete top;
}


int main()
{
  elem *stack;
  init(stack);
  int i;
  for(i = 1; i <= 10; i++) push(stack,i);

  while(!empty(stack))
  {
    cout << pop(stack)<<endl;
  }
}

 

Podobne pytania

0 głosów
1 odpowiedź 169 wizyt
pytanie zadane 14 grudnia 2016 w C i C++ przez Programator Nowicjusz (160 p.)
0 głosów
1 odpowiedź 64 wizyt
+1 głos
0 odpowiedzi 241 wizyt
pytanie zadane 1 sierpnia 2022 w C i C++ przez Kuba Kaleta Nowicjusz (230 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...