2015-01-03 3 views
0

Для проекта я должен создать пустой связанный список в одной функции, а затем использовать этот связанный список в другой функции для добавления в него элементов. На данный момент это мой код для пустого связанного списка:Добавление элементов в пустой список C

typedef struct node_t { 

int value; 
int priority; 
struct node_t *next; 

}node; 

typedef struct priorty_linked_list { 

struct name *head; 

int current_size; 
int max_size; 


}priority_list; 

typedef node *Node; 
typedef priority_list *List; 

Наш инструктор дал нам приведенный выше код, так что не должно быть ничего плохого с ним. Затем я начал с функцией создания:

void create(int max_terms) { 


node *head = NULL; 
node *next = NULL; 
List *current_size = 0; 
List *max_size = max_terms; 

max_size = (List*)malloc(sizeof(List)); 

printf("The maximum size for the list is %d",max_terms); 


} 

Я предполагаю, что следующая функция требует от меня, чтобы использовать функцию возврата из функции создания, но им не уверен, как это сделать. Функция добавления должна принимать очередь, созданную выше как параметр, и не работать, если я не создал очередь раньше из-за выделения памяти.

Любые советы или рекомендации по моему вышеуказанному коду были бы очень признательны!

Спасибо :)

+4

«Наш инструктор дал нам вышеуказанный код, поэтому в нем не должно быть ничего плохого» - в большинстве случаев это неверно;) – Maroun

+0

Список * max_size = max_terms; это неверно, и List * current_size = 0; – Shmoopy

+1

Если ваш инструктор предоставил вам вышеуказанный код, получите нового инструктора. У этого есть вопиющая ошибка. Нет такой вещи, как 'struct name'. И «пустой связанный список», который содержит данные за указателем головы (длина, может быть, указатель на хвост и т. Д.), Обычно выполняется в своей собственной структуре (ваш «priority_list»), где просто инициализируется и возвращается по значению из «создать» функцию. C поддерживает значение-возврат структур, и я не вижу смысла динамически создавать структуру данных списка (вы будете делать это уже с узлами списка *). И *, пожалуйста, не скрывайте типы указателей в typedefs *. – WhozCraig

ответ

1

Я собираюсь предположить, что в определении priorty_linked_list, вы хотели написать:

struct node *head; 

вместо:

struct name *head; 

This site has a great explanation и достойной реализации которые могут использоваться для справки. Есть тысячи примеров в Интернете, очень похожих на то, что вы должны реализовать. Не бойтесь его Google.

+0

Привет, спасибо за ответ. Я видел этот сайт и бесчисленное множество других. Но, к сожалению, ни один из тех, что я видел, не имеет функции исключительно для создания пустого списка, что является моим вопросом. – user3160152

+0

Вы уверены, что вам нужно реализовать 'create()' с такой точной сигнатурой функции? – karlphillip

+0

Описание, данное мне: Создайте новую очередь приоритетов для хранения элементов с максимальным количеством элементов max_size – user3160152