Синтаксис использования функции для вызова других функций, связанных со связанными списками? - PullRequest
0 голосов
/ 24 апреля 2019

Из-за проблемы с практикой я разработал некоторый код, выполнив ряд шагов, и теперь просит, чтобы я вызвал несколько функций из новой функции.У меня возникли некоторые проблемы с синтаксисом объявления функции и вызова функции, и я мог бы использовать некоторые рекомендации.

Практическая проблема:

  • ИзменитьВаша программа:
    • Добавляет just_checkin функцию, которая вызывает функцию trav_and_print для печати значений данных, печатает количество элементов в связанном списке (вызывая count_elems ) и печатает значения first-> data и last-> data.

Я пробовал несколько подходов, например, включая void just_checkin(elementptr);, just_checkin(first); в main и запись функции в виде

void just_checkin(elementptr f) 
{
    trav_and_print(elementptr f);
    count_elems(elementptr f);
}

Возможно, неудивительно, что это не сработало.Я также пытался сместить аргументы внутри функции, вызывая функции другими способами, кроме подачи (elementptr) через нее, и выписывая синтаксис множеством других способов и т. Д. Я в растерянности.

Мой предыдущий код, который я должен изменить, добавив еще одну функцию:

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

typedef struct linked_list
{
   int data;
   struct linked_list *next;
}   element;

typedef element * elementptr;

void trav_and_print(elementptr); //prints data values

int count_elems(elementptr); //counts the number of elements in the linked list

int main()
{
   elementptr first = NULL;
   elementptr last = NULL;
   int var = 0;
   int NumElems = 0;

   /* Create a linked list with one element            */
   /* NOTE: the first element is always a special case */

   first = (elementptr) malloc(sizeof(element));
   last = first;
   last -> data = 5;
   last -> next = NULL;

   /* Add another element to the end of the list */

   last -> next = (elementptr) malloc(sizeof(element));
   last = last -> next;
   last -> data = 12;
   last -> next = NULL;

   /*Add another element to the end of the list;
   user generated number*/

   last -> next = (elementptr) malloc(sizeof(element));
   last = last -> next;
   printf("Enter the data value to add to the linked list: ");
   scanf("%d",&var);
   last -> data = var;
   last -> next = NULL;

   trav_and_print(first); //prints the linked list

   NumElems = count_elems(first); //traverses and counts the elements in the linked list

   printf("Number of elements in the linked list: %d",NumElems);

   free(first);
   free(last);

   return 0;
}
void trav_and_print(elementptr f)
{
    elementptr current;

    current = f;
    if(current == NULL)
        printf("There is no linked list!\n");
    else
        while (current != NULL)
    {
        printf("The data value is %d\n",current->data);
        current = current -> next;
    }
}
int count_elems(elementptr f)
{
    int count = 0;
    elementptr current;
    current = f;
    while(current != NULL)
    {
        current = current->next;
        count++;
    }
    return count;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...