Из-за проблемы с практикой я разработал некоторый код, выполнив ряд шагов, и теперь просит, чтобы я вызвал несколько функций из новой функции.У меня возникли некоторые проблемы с синтаксисом объявления функции и вызова функции, и я мог бы использовать некоторые рекомендации.
Практическая проблема:
- ИзменитьВаша программа:
- Добавляет 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;
}