Замена первого и последнего элемента в списке

Описать процедуру или функцию, которая в списке L меняет местами первый и последний элементы. "Простые списки" №13 (см. "Сборник задач для начинающего программиста")

Алгоритм:
1)создаем страктуру список
2)получаем от пользователя число, являющееся длиной списка
3)заполняем список числами
4)меняем местами первый и последний элемент
5)освобождаем память

#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();
}

Ключевые слова: 
список, порядок элементов, замена
ВложениеРазмер
list1.rar9.04 кб