Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Архітектура материнських плат

Реферат Архітектура материнських плат





br/>

Функція oneLeft - повертає 1, якщо в списку залишився один елемент, інакше повертає нуль

В 



Функція delete4 - видаляє елемент з списку


























Повний вихідний текст програми

// підключення стандартних заголовків файлів

# include

# include

// визначення структури - осередки зв'язкового циклічного списку

struct listNode {

int data;

struct listNode * nextPtr;

};

// визначення типу структури і покажчика на неї

typedef struct listNode LISTNODE;

typedef LISTNODE * LISTNODEPTR;

// прототипи функцій

// функція виводу списку

int prinList (LISTNODEPTR *);

// функція вставки в список

void insert (LISTNODEPTR *, int);

// функція видалення елемента списку

int delete4 (LISTNODEPTR *, int);

// пророкує функція

int oneLeft (LISTNODEPTR);

// функція main

main () {

// визначення покажчика на початок списку

LISTNODEPTR startPtr = NULL;

int g;

printf ("Please fill the list with INTEGER value. nAdding is stoped by 0 value. n ");

// введення значення для заповнення списку

scanf ("% i", & g);

while (g! = 0) {

// виклик функції вставки в список і передача їй адреси першого елемента списку та значення нового елемента

insert (& startPtr, g);

scanf ("% i", & g);

}

printf (" n __________________________________________ N ");

printf (" n List IS: n");

// виводить на екран список і перевіряє повертається функцією виведення списку значення

if (PrinList (& startPtr)) {//якщо виведено успішно

// введення значення задовольняє умові типу int і умовою задачі

while ((g <1) | | (g> 32000)) {

printf (" nEnter number to delete:");

scanf ("% i", & g);

}

printf (" n");

// поки не залишився один елемент - видаляти елементи відповідно до введеним номером

while ((! oneLeft (startPtr))) {

delete4 (& startPtr, g);

};

printf ("The last element is:");

// виводить на екрн список

prinList (& startPtr);

printf (" nPress ENTER to exit ...");

getch ();

}

else {// Якщо виведення списку неуспешен (список порожній або пошкоджений)

printf ("Nothing to delete nPress ENTER to exit ...");

getch ();

}

return 0;

}

// функція вставки в список. Вставляє прийняте значення в кінець списку

void insert (LISTNODEPTR * sPtr, int value) {

// ініціалізація змінних

LISTNODEPTR newPtr, previousPtr, currentPtr;

// виділяємо пмять для структури listnode, і записуємо адресу в newPtr

newPtr = malloc (sizeof (LISTNODE));

// якщо пам'ять виділена:

if (newPtr ! = NULL)

{

// формуємо нову комірку списку

newPtr-> data = value;

newPtr-> nextPtr = NULL;

// ставимо покажчик currentPtr на початок списку

currentPtr = * SPtr;

// якщо список порожній:

if (* sPtr == NULL) {

// формуємо перший елемент списку

newPtr-> nextPtr = * sPtr;

* sPtr = newPtr;

}

else

{//якщо список не порожній

// якщо список складається з одного елемента

if ((CurrentPtr-> nextPtr) == NULL) {

// вставляємо новий елемент списку і зациклюється список

newPtr-> nextPtr = * sPtr;

((* sPtr) -> nextPtr) = newPtr;

}

else {//якщо список складається з двох і більш

// встановлюємо покажчик на currentPtr на останній елемент циклічного списку

// поки наступний за currentPtr елемент не початок списку

while (CurrentPtr-> nextPtr! = * SPtr) {

// пересуваємо currentPtr за списком вперед

currentPtr = currentPtr-> nextPtr;

}

// вставляємо новий елемент списку і замикаємо список

currentPtr-> nextPtr = newPtr;

newPtr-> nextPtr = * sPtr;

}

}

}

// вивід повідомлення про помилку в разі невиділення пам'яті

else

printf ("Insuficient Memory!!! ENOUGH!");

}

// функція друку списку. Приймає покажчик списку та друкує список. Якщо список порожній - повертає 0

int prinList (LISTNODEPTR * sPtr)

{

// визначення змінної покажчика

LISTNODEPTR currentPtr;

// установка покажчика на початок списку

currentPtr = * sPtr;

if (currentPtr == NULL) {//якщо список порожній

printf ("List is empty. n n"),

return 0;

}

else {/...


Назад | сторінка 5 з 6 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка програми для зберігання і виведення списку співробітників і їхні з ...
  • Реферат на тему: Розробка програми, що реалізує алгоритм двусвязного списку
  • Реферат на тему: Пам'ятки природи, занесені до списку ЮНЕСКО
  • Реферат на тему: Організація списку за допомогою двійкового дерева
  • Реферат на тему: Об'єктна реалізація поліморфного контейнера на основі лінійного списку