Находждение суммы последнего и предпоследнего элементов простого списка

Описать процедуру или функцию, которая в списке L находит сумму последнего и предпоследнего элементов (в списке содержится не менее 2-х элементов). Задание № 14. (см. "Сборник задач для начинающего программиста").

Алгоритм :
1) Строим однонаправленный список из m элементов
2) "Доходим" до предпоследнего элемента списка
3) Находим сумму двух последних элементов

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
  struct TNode {                // объявляем структуру данных
 
    int n;
 
    TNode *next;
 
  }  *start , *last ;
 
 
 void funkt1 (int m ) {         // функция построения списка
 
   TNode *p;
 
   while (m!=0) {
 
     if (start==NULL) {          // создаём первый элемент
 
       start= new TNode;
       start->n=random(100);
       start->next=NULL;
       last=start;
       printf(" %d ",start->n);
 
     }
 
     else {                      // строим остальные элементы
 
       p= new TNode;
       p->n=random(100);
       p->next=NULL;
       last->next=p;
       last=p;
       printf(" %d ",p->n);
 
     }
 
      m--;
 
    }
 
  return  ;
 
 }
 
 void funkt2 () {          // функция нахождения суммы
 
 int S=0;
 
 TNode *f;
 
 f=start;
 
 while ((f->next)->next!=NULL)   // доходим до предпоследнего элемента списка
 
  f=f->next;
 
 S= f->n + (f->next)->n ;        // находим сумму предпоследнего и последнего элементов
 
printf("\n S=%d ",S);
 
return ;
 
}
 
int main() {
 
 randomize ();
 
 clrscr ();
 
 int L;
 
 printf("vvedute kol-vo elementov : ");
 scanf("%d",&L);
 
 funkt1 (L);
 
 funkt2 ();
 
 getch();
 
return 0 ;
 
}

Ключевые слова: 
однонаправленный список, сумма элементов списка
ВложениеРазмер
14_os.rar11.24 кб