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

Implementacja stosu na bazie tablicy c

0 głosów
291 wizyt
pytanie zadane 14 listopada 2021 w C i C++ przez pawel_000 Początkujący (450 p.)

Mam problem z implematacja stasu na tablicy.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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

struct stack_node * push ( struct stack_node *top , int data )
{
struct stack_node * new_node = ( struct stack_node *)malloc ( sizeof ( struct stack_node ) ) ;
if( NULL != new_node ){
new_node -> data = data ;
new_node -> next = top ;
top = new_node ;
}
return top ;
}

int pop( struct stack_node ** top)
{
int result = -1;
if ( NULL != *top)
{
result = (* top ) ->data ;
struct stack_node *tmp = (* top) ->next ;
free (* top ) ;
*top = tmp;
}
return result ;
}
int peek ( struct stack_node *top)
{
if ( NULL != top)
return top -> data ;
fprintf (stderr , " Stack is empty .\n") ;
return -1;
}

int main ()
{
struct stack_node *top = NULL ;
srand ( time ( NULL ) ) ;
int i, elements = 5+ rand () %6;
printf ("Top of the stack : %d\n", peek (top) ) ;
for (i=0; i< elements ; i++)
top = push (top , i) ;
printf ("Top of the stack : %d\n", peek (top) ) ;
printf (" Stack elements : ") ;
while ( NULL != top)
printf ("%d ", pop (& top ) ) ;
printf ("\n") ;
printf ("Top of the stack : %d\n", peek (top) ) ;
return 0;
}

Mam to wykonac za pomoca 

struct stack
{
int data [ 10 ];
int top; };

Czy po prostu mam wrzucic pod struct stack_node?

1 odpowiedź

+2 głosów
odpowiedź 14 listopada 2021 przez j23 Mędrzec (195,220 p.)
wybrane 17 listopada 2021 przez pawel_000
 
Najlepsza
Nie. Tamten stos jest zaimplementowany jako lista jednokierunkowa, a tu masz prosty stos na tablicy. Jest banalny w implementacji.
komentarz 17 listopada 2021 przez pawel_000 Początkujący (450 p.)
Niestety dopiero zaczynam . Mozesz mi jakos pomoc ?
komentarz 17 listopada 2021 przez Oscar Nałogowiec (29,360 p.)

Trzeba to zaimplementować dokładnie tak jak to robią procesory:

data[top++] = item;
return data[--top];

 

Oczywiście trzeba sprawdzać, czy są dane/wolne miejsce.

Podobne pytania

0 głosów
1 odpowiedź 531 wizyt
pytanie zadane 19 maja 2021 w C i C++ przez hassan00 Nowicjusz (130 p.)
0 głosów
2 odpowiedzi 856 wizyt
pytanie zadane 14 października 2018 w C i C++ przez periedynek Obywatel (1,320 p.)
+4 głosów
1 odpowiedź 555 wizyt
pytanie zadane 5 lutego 2017 w C i C++ przez JAKUBW Nałogowiec (33,470 p.)

93,599 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,082 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

Kursy INF.02 i INF.03
...