C Упражнения: создайте односвязный список и подсчитайте количество узлов

Связанный список C: Упражнение-3 с решением

Напишите программу на C, чтобы создать односвязный список из n узлов и подсчитать количество узлов.

Наглядное представление:

Пример решения:

Код C:

  #include  #include  struct node {int num; //Данные узла struct node * nextptr; //Адрес узла} * stnode; void createNodeList (int n); //функция для создания спискаint NodeCount (); //функция для подсчета узловvoid displayList (); //функция для отображения списка int main () {int n, totalNode; printf (" n  n Связанный список: Создайте односвязный список и подсчитайте количество узлов:  n"); printf ("----  --------------------------------------------------  ------------------------  n ");  printf ("Введите количество узлов:");  scanf ("% d", & n);  createNodeList (n);  printf (" n В список введены следующие данные:  n");  displayList ();  totalNode = NodeCount ();  printf (" n Общее количество узлов =% d  n", totalNode);  return 0;} void createNodeList (int n) {struct node * fnNode, * tmp;  целое число, я;  stnode = (узел структуры *) malloc (sizeof (узел структуры));  if (stnode == NULL)//проверяем, является ли stnode NULL, и если да, то не выделяется память {printf ("Память не может быть выделена.");  } else {//считывает данные для узла с помощью клавиатуры printf ("Входные данные для узла 1:");  scanf ("% d", & num);  stnode-> число = число;  stnode-> nextptr = NULL; //Связывает поле адреса с NULL tmp = stnode;//Создает n узлов и добавляет в связанный список для (i = 2; inum = num;//связывает поле num fnNode с num fnNode-> nextptr = NULL;//связывает адресное поле fnNode с NULL tmp-> nextptr = fnNode;//связывает предыдущий узел, т.е. tmp, с fnNode tmp = tmp-> nextptr;}}}} int NodeCount () {int ctr = 0; struct node *  tmp; tmp = stnode; while (tmp! = NULL) {ctr ++; tmp = tmp-> nextptr;} return ctr;} void displayList () {struct node * tmp; if (stnode == NULL) {printf ("Нет  данные найдены в списке. ");} else {tmp = stnode; while (tmp! = NULL) {printf (" Data =% d  n ", tmp-> num);//выводит данные текущего узла tmp = tmp-> nextptr; //продвигает позицию текущего узла}}}  

Пример вывода:

 Связанный список: создание односвязного списка и подсчет количества узлов  : -------------------------------------------------  ----------------------------- Введите количество узлов: 3 Входные данные для узла 1: 5 Входные данные для узла 2: 6  Входные данные для узла 3: 7 В список внесены следующие данные:  Данные = 5 Данные = 6 Данные = 7 Общее количество узлов = 3 

Блок-схема:

createNodeList ():

NodeCount ():

displayList ():

Редактор кода программирования на C:

Оцените статью
nanomode.ru
Добавить комментарий