Lista jednokierunkowa

0

Mam takie zadanie Napisz program, w którym zaimplementujesz jednokierunkową listę liniową za pomocą jednowymiarowej tablicy, na którą pamięć będzie przydzielana w sposób dynamiczny.
Nie wiem jak zrobic zeby ta pamięć była w sposób dynamiczny, próbowałam cos ale nie wychodzi.

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

#define LIST_SIZE 10

struct list_node
{
    int elements[LIST_SIZE], first, last;
};

int add_one (int index)
{
    return (index+1)%LIST_SIZE;
}

void make_empty(struct list_node *list)
{
    list -> first = 0;
    list -> last = LIST_SIZE - 1;
}

bool is_empty (struct list_node list)
{
    return add_one(list.last) == list.first;
}

int first_one (struct list_node list)
{
    if (is_empty(list) == true)
        return -1;
    else
    return list.elements[list.first];
}

void add_to_list (struct list_node *list, int data)
{
    if (add_one(add_one(list -> last)) != list -> first)
    {
        list -> last = add_one(list -> last);
        list -> elements[list -> last] = data;
    }
    else
        fprintf(stderr, "Lista jest pelna!\n");
}

void remove_from_list (struct list_node *list)
{
    if ((is_empty(*list)) != false)
        fprintf(stderr, "Lista jest pusta!\n");
    else
        list -> first = add_one(list -> first);
}

int main ()
{
    struct list_node list;
    make_empty(&list);
    int *T;
    T=(int*)malloc(10*sizeof(int));
    int i=0, size=10;
    if (T != NULL)
    {
        do{
            do{
                printf("Podaj liczbe: ");
                scanf("%d", &T[i]);
                i++;
                add_to_list(&list, i);
                if (i == size)
                {
                    T =(int *)realloc(T, (size+10)*sizeof(int));
                    size+=10;
                }
            }while (add_one(add_one(list.last)) != list.first);
        }while(T[i-1]);
    }
    while (!is_empty(list)){
    printf("%3d", first_one(list));
    remove_from_list(&list);
    }
    return 0;
}
0

Lista jednokierunkowa, która pod spodem ma array trochę kłóci się z definicją listy jednokierunkowej. Trochę jak danie wegetariańskie z kurczakiem :D

Próbowałeś wpisać w Google "c++ dynamic size array"?

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