В настоящее время я работаю над своей домашней работой. В моей программе мне пришлось использовать очередь, поэтому я написал очередь со списком Linked. Но это не похоже на мой синтаксис.Как правильно реализовать очередь с использованием Связанный список
Так что я STRUCT
typedef struct Node{
pthread_t thread;
int threadID;
int securityMode; // nTS = 1, S = 2, U = 3
//int cluseterHalf; //either 1st or 2nd
struct NODE *next;
int executionTime;
int isLast;
}NODE;
typedef NODE *Link;
И это, где я пытался сделать Епдиеие.
void Enqueue(Link node, Link *Queue){
Link previous = NULL;
Link current = *Queue;
while (current->isLast){
previous = current;
current = current->next;
}
if(previous == NULL){
node->next = current;
*Queue = node;
}
else{
previous->next = node;
node->next = current;
}
}
Я попытался немного изменить свой код, но я получаю эту ошибку.
Cluster.c:162:13: warning: assignment from incompatible pointer type
[enabled by default]
current = current->next;
^
Cluster.c:165:16: warning: assignment from incompatible pointer type [enabled by default]
node->next = current;
^
Cluster.c:169:20: warning: assignment from incompatible pointer type [enabled by default]
previous->next = node;
^
Cluster.c:170:16: warning: assignment from incompatible pointer type [enabled by default]
node->next = current;
Я попытался рассмотреть некоторые вопросы о stackoverflow, похожие на мои. 1) Question1
Так что я сделал много логических и нелогичных попыток. Я попытался написать node-> next = & current, так как next является указателем, и он получит значение адреса. Но это не сработало :( Я также попытался сделать oposit * (node-> next) = current
Я, наконец, нашел правильный вариант для меня, но я не уверен. Если это то, что я хотел. думая, что я должен был иметь STRUCT NODE * следующий но если я изменить NODE * рядом с NODE рядом, чем я не получаю эти ошибки но я получаю разные один:.
Cluster.c:25:15: error: field ‘next’ has incomplete type
struct NODE next;
Можете ли вы сказать мне, как устранить эту проблему?
Эта строка: 'typedef NODE * Link;' это плохая идея, так как она создала typedef typedef \t , когда typedef'ing указателя, гораздо лучше использовать кодировку, чтобы включить какое-то указание в новое имя typedef относительно того, на что оно указывает, и что это указатель. предложите «typedef NODE * pNode», и никогда не существует какой-либо обоснованной причины для typedef определения структуры. просто используйте «struct Node» когда когда-либо понадобится и удалите модификатор typedef – user3629249