Описать процедуру или функцию, которая в списке L меняет местами первый и последний элементы. "Простые списки" №13 (см. "Сборник задач для начинающего программиста") Алгоритм: #include <stdafx.h> #include <stdlib.h> #include <conio.h> struct List //создаем структуру { int n; List *next; } *start, *last; void change( void ) { List *s, *l; s = start; l = last; int h; h = s -> n; s -> n = l -> n; // меняем местами первый и последний этементы списка l -> n = h; } void fill_list( int N ) // функция заполнения списка числами { List *p; int i; if ( start == NULL ) //для первого элемента списка { start = new List; start -> n = 1; start -> next = NULL; last = start; } for( i = 2; i <= N; i++ ) // для всех остальных { p = new List; p -> n = i; p -> next = NULL; last -> next = p; last = p; } } void main() { start = NULL; last = NULL; List *p1, *p2, *p; printf( "VVedite razmer spiska\n" ); int M; scanf( "%d", &M ); // считываем размер списка fill_list( M ); // заполняем его p = start; while( p != NULL ) { printf("| %2d |", p -> n ); // выводим на экран p = p -> next; } change(); p = start; printf("\n"); //переводим курсор на строку ниже, чтобы не запутаться while( p != NULL ) { printf("| %2d |", p -> n ); // выводим на экран то что получилось p = p -> next; } p = start; p1 = start; p2 = NULL; while (p != NULL) { p1 = p -> next; //освобождаем память delete p; p = p1; } getch(); }
Ключевые слова:
список, порядок элементов, замена
|
|||||||