Назначение указателей на узлы структуры - PullRequest
0 голосов
/ 22 января 2020

У меня есть домашнее задание, которое содержит узлы структуры, и в одной из функций написано current-> next-> Firstname, и мой вопрос: каков тип данных current-> next-> Firstname? Спасибо . соответствующие части кода следующие:

typedef struct node
{
    char Lastname[50];
    char Firstname[50];
    char Initials[50];
    char Mobile[50];
    char Class[50];
    char InitialSort[50];
    char RandomSort[50];

    struct node *next;
} node;

node *HEAD=NULL;

// more code here.

void sortedInsert(node** head_ref,node* new_node)
{
    node* current;
    // Special case for the head end
    if (*head_ref == NULL || (*head_ref)->Firstname >= new_node->Firstname)
    {
        new_node->next = *head_ref;
        *head_ref = new_node;
    }

    else
    {
        // Locate the node before the point of insertion
        current = *head_ref;
        while (current->next!=NULL && strcmp(current->next->Firstname, new_node->Firstname)<0 )
        {
            current = current->next;
        }
        new_node->next = current->next;
        current->next = new_node;
    }
}

1 Ответ

0 голосов
/ 22 января 2020

Любой массив неявно является указателем на первый элемент. Итак, char Firstname [50] - это просто char * Firstname с выделенными 50 байтами. Тогда ваш тип будет char *.

Чтобы следовать указателям, следует понимать, что структура - это просто большой набор выделенных данных. Таким образом, current-> next просто читает адрес следующего узла в списке. Оттуда он просит найти переменную Firstname. Это приведет к переходу к адресу первого элемента Firstname для узла «next».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...