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

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

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

Графическая презентация:

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

Код C:

  #include  #include  struct node {int num; //Данные узла struct node * nextptr; //Адрес узла} * stnode; void createNodeList (int n); //функция для создания listvoid NodeInsertatEnd (int num);//функция для вставки узла в конечную точку displayList (); //функция для отображения списка int main () {int n, num; printf (" n  n Связанный список: вставьте новый узел в конец односвязного списка:  n"); printf ("-  --------------------------------------------------  ---------------------  n ");  printf ("Введите количество узлов:");  scanf ("% d", & n);  createNodeList (n);  printf (" n В список введены следующие данные:  n");  displayList ();  printf (" n Входные данные для вставки в конец списка:");  scanf ("% d", & num);  NodeInsertatEnd (число);  printf (" n Данные, после вставки в список:  n");  displayList ();  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;}}}} void NodeInsertatEnd (int num) {struct node * fnNode, *  tmp; fnNode = (struct node *) malloc (sizeof (struct node)); if (fnNode == NULL) {printf ("Невозможно выделить память.");} else {fnNode-> num = num;// Связывает часть данных fnNode-> nextptr = NULL; tmp = stnode; while (tmp-> nextptr! = NULL) tmp = tmp-> nextptr; tmp-> nextptr = fnNode;//Связывает часть адреса}} 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 В список внесены следующие данные:  Data = 5 Data = 6 Data = 7 Входные данные для вставки в конец списка: 8 Данные после вставки в список: Data = 5 Data = 6 Data = 7 Data = 8 

Блок-схема:

createNodeList ():

NodeInsertatEnd ():

displayList ( ):

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

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