C Упражнения: создание и отображение двусвязного списка в обратном порядке

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

Напишите программу на C для создания двусвязного списка и отображения в обратном порядке.

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

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

Код C:

  #include   #include  struct node {int num;  struct node * preptr;  struct node * nextptr;} * stnode, * ennode;  void DlListcreation (int n); void displayDlListRev (); int main () {int n;  stnode = NULL;  ennode = NULL; printf (" n  n Двусвязный список: создание и отображение двусвязного списка в обратном порядке:  n"); printf ("----------------  --------------------------------------------------  ------------------  n ");  printf ("Введите количество узлов:");  scanf ("% d", & n);  DlListcreation (n);  displayDlListRev ();  return 0;} void DlListcreation (int n) {int i, num;  struct node * fnNode;  если (n> = 1) {stnode = (struct node *) malloc (sizeof (struct node));  if (stnode! = NULL) {printf ("Входные данные для узла 1:"); //присвоение данных в первом узле scanf ("% d", & num);  stnode-> число = число;  stnode-> preptr = NULL;  stnode-> nextptr = NULL;  ennode = stnode;//помещаем данные для остальных узлов for (i = 2; inum = num; fnNode-> preptr = ennode;//новый узел связывается с предыдущим узлом fnNode-> nextptr = NULL; ennode->  nextptr = fnNode;//предыдущий узел связывается с новым узлом ennode = fnNode;//назначает новый узел последним узлом} else {printf ("Невозможно выделить память."); break;}}} else {printf (  "Невозможно выделить память.");}}} Void displayDlListRev () {struct node * tmp; int n = 0; if (ennode == NULL) {printf ("Данные в списке еще не найдены. ");} else {tmp = ennode; printf ("  n Данные в обратном порядке:  n "); while (tmp! = NULL) {printf (" Данные в узле% d:% d  n ", n  +1, tmp-> num); n ++; tmp = tmp-> preptr;//текущий указатель установлен с предыдущим узлом}}}  

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

 Двусвязный список: создание и отображение двусвязного списка в обратном порядке: -------------------------------  --------------------------------------------------  --- Введите количество узлов: 3 Входные данные для узла 1: 2 Входные данные для узла 2: 5 Входные данные для узла 3: 8 Данные в обратном порядке:  Данные в узле 1: 8 Данные в узле 2: 5 Данные в узле 3: 2 

Блок-схема:

DlListcreation ():

displayDlListRev ():

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

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