Файл: Алгоритмы и структуры данных-Кр-ИВТ-3у-Назаренко.pdf

ВУЗ: Не указан

Категория: Задание

Дисциплина: Программирование

Добавлен: 21.10.2018

Просмотров: 1432

Скачиваний: 21

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

  return Success; 

 

int p4(Link* Start, Link*& Find, int Key) 

  Link* Cur = Start->next; 

  int Success = 0; 

  while (Cur != Start && !Success) 

  { 

    if (Cur->Value == Key) 

    { 

      Find = Cur; 

      Success = 1; 

      break; 

    } 

    Cur = Cur->next; 

  } 

  return Success;  

 

Процедуры сортировки 

void s1(float* item, int n) 

 

  

  int a,b; 

 

  

  float buf; 

 

  

  for (a = 1; a<n; ++a) 

 

  

    for (b = n-1; b>=a; --b) 

 

  

      if (item[b-1]>item[b]) 

 

  

      { 

 

  

        buf = item[b-1]; 

        item[b-1] = item[b]; 

 

  

        item[b] = buf; 

 

  

      } 

 

  


background image

 

void s2(float* item, int n) 

  int a,b,c; 

  float buf; 

  int change; 

  for (a = 0; a<n-1; ++a) 

  { 

    change = 0; 

    c = a; 

    buf = item[a]; 

    for (b = a+1; b<n; ++b) 

      if (item[b]<buf) 

      { 

        buf = item[b]; 

        c = b; 

        change = 1; 

      } 

    if (change) 

    { 

      item[c] = item[a]; 

      item[a] = buf; 

    } 

  } 

 

void s3 (float* item, int n) 

  int a,b; 

  float buf; 

  for (a = 1; a<n; ++a) 

  { 

     buf = item[a]; 

     b = a-1; 

     for (b = a-1; b>=0 && buf < item[b]; b--) 


background image

 

       item[b+1] = item[b]; 

    item[b+1] = buf; 

  } 

 

void s4(float* item, int n) 

  int step[5] = {9,5,3,2,1}; 

  int i,j,k,h; 

  float buf; 

  for (k = 0; k<ST; k++) 

  { 

    h = step[k]; 

    for (i = h; i<n; i++) 

    { 

      buf = item[i]; 

      for(j = i-h; buf<item[j] && j>=0; j-=h) 

        item[j+h] = item[j]; 

      item[j+h] = buf; 

    } 

  } 

 

void s5(float* item, int left, int right) 

  int i,j; 

  float comp,buf; 

  i = left; j = right; 

  comp = item[(left+right)/2]; 

  do { 

    while (item[i]<comp && i<right) 

      i++; 

    while (comp<item[j] && j>left) 

      j--; 


background image

 

    if (i<=j) { 

      buf = item[i]; 

      item[i] = item[j]; 

      itme[j] = buf; 

      i++; j--; 

    } 

  } while(i<=j); 

  if (left<j) 

    s5(item, left, j); 

  if (i<right) 

    s5(item, i, right); 

 


background image

 

10 

Пример выполнения контрольной работы 

Пусть номер студенческого билета 083457. 

Тогда две последние цифры: A = 5, B = 7. 

Сумма цифр A + B = 5 + 7 = 12. 

(A+B)

4

 = 30. Последняя цифра = 0. 

 

1. Тип списка – 1-связный кольцевой

2. Тип данных – длинные беззнаковые целые числа (unsigned long int). 

3. Тип звена списка

struct Zveno { 

  unsigned long int Data

  Zveno *next; 

}; 

 

Процедуры работы со связным списком выбираются по типу списка – для 1-связного 

кольцевого списка. 

4. Процедура добавления звена

void i1(Zveno* Pred, unsigned long int data) 

  Zveno* Loc = new Link1; 

  Loc->Data = data; 

  Loc->next = Pred->next; 

  Pred->next = Loc; 

 

5. Процедура удаления звена

void d2(Zveno* Pred) 

  Zveno* Loc; 

  Loc = Pred->next; 

  Pred->next = Loc->next; 

  delete Loc;