Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Задані дві послідовності цілих i дійсних чисел. Побудувати однозв’язний список, у якому числа послідовностей чергуються.
- Якщо останнім елементом списку є ціле число, перенести його на початок списку. Надрукувати списки до та після зміни. */
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdbool.h>
- struct list
- {
- float data; //поле даних
- struct list *ptr; //вказівник на наступний елемент
- };
- struct list first_step(float a) //а - значення першого вузла списку
- {
- struct list *lst;
- lst = (struct list*)malloc(sizeof(struct list)); //виділення пам'яті під корінь списку
- lst->data = a;
- lst->ptr = NULL; //останній вузол списку
- return *lst;
- }
- void print_list(struct list *lst, int summ);
- struct list add(struct list *lst, float number)
- {
- struct list *temp, *p;
- temp = (struct list*)malloc(sizeof(struct list));
- p = lst->ptr; //збереження покажчика на наступний вузол
- lst->ptr = temp; //попередній вузол вказує на той, що створюється
- temp->data = number;
- temp->ptr = p; //створений вузол вказує на наступний елемент
- return *temp;
- }
- struct list * deletelem(struct list *lst, struct list *root, int summ)
- {
- struct list *temp;
- temp = root;
- lst->ptr = root; // переставляем указатель
- // освобождаем память удаляемого узла
- return(lst);
- }
- //
- //void insert(struct list* lst, int index, int data)
- //{
- // if (index == 0) add(lst, data);
- // else
- // {
- // struct list *current = lst;
- // int i;
- // for (i = 0; i < index; i++)
- // {
- // current = current->ptr;
- // }
- // add(current, data);
- // }
- //}
- void Push(struct list** lst, int data)
- {
- struct list *newNode = (struct list*)malloc(sizeof(struct list));
- newNode->data = data;
- newNode->ptr = *lst;
- *lst = newNode;
- }
- void print(struct list *lst, int summ)
- {
- struct list *p;
- //struct list *h;
- //h = lst;
- //p = lst;
- //for (int i = 0; i < summ; i++)
- //{ //if (i == summ - 1)
- // //{
- // h = h->ptr;
- // //int b = (int)p->data;
- // if (i == summ - 2)
- // {
- // lst = deletelem(h, lst, summ);
- // }
- // //}
- //}
- p = lst;
- for (int i = 0; i < summ; i++)
- {
- if (i == summ)
- {
- int b = (int)p->data;
- if ((double)b != p->data)
- {
- Push(&lst, p->data);
- }
- }
- p = p->ptr; // переход к следующему узлу
- }
- print_list(lst, summ);
- }
- void print_list(struct list *lst, int summ)
- {
- struct list *p;
- p = (struct list*)malloc(sizeof(struct list));
- p = lst;
- for (int i = 0; i < summ; i++)
- {
- printf("%5.2lf", p->data); // вывод значения элемента p
- p = p->ptr; // переход к следующему узлу
- }
- printf("\n");
- }
- void keyboard()
- {
- struct list *lst = (struct list*)malloc(sizeof(struct list));
- int answer, answer2, summ;
- float *nums, *nums2;
- bool checked = false, checked2 = false;
- printf("How many numbers do you want to enter in integer array?: "); scanf("%d", &answer);
- nums = (float*)malloc(answer * sizeof(float));
- printf("\nInput integer array: \n");
- for (int i = 0; i < answer; i++)
- {
- printf("array[%d] = ", i);
- scanf("%f", &nums[i]);
- }
- printf("\nYour integer array: \n");
- for (int i = 0; i < answer; i++)
- {
- printf("array[%d] = %3f\n", i, nums[i]);
- }
- printf("How many numbers do you want to enter in float array?: "); scanf("%d", &answer2);
- nums2 = (float*)malloc(answer2 * sizeof(float));
- printf("\nInput float array: \n");
- for (int i = 0; i < answer2; i++)
- {
- printf("array[%d] = ", i);
- scanf("%f", &nums2[i]);
- }
- printf("\nYour array: \n");
- for (int i = 0; i < answer2; i++)
- {
- printf("array[%d] = %6.3f\n", i, nums2[i]);
- }
- summ = answer + answer2;
- int j = 0, k = 0, counter = 0;
- for (int i = 0; i < summ; i++)
- {
- if (i == 0)
- {
- lst[i] = first_step(nums2[k]);
- k++;
- }
- else {
- if (i % 2 == 0)
- {
- if (k > answer2 - 1) {
- lst[i] = add(lst, nums[j]);
- j++;
- }
- else {
- printf("%f\n", nums2[k]);
- lst[i] = add(lst, nums2[k]);
- k++;
- }
- }
- else
- {
- if (j > answer - 1) {
- printf("%f\n", nums2[k]);
- lst[i] = add(lst, nums2[k]);
- k++;
- }
- else {
- lst[i] = add(lst, nums[j]);
- j++;
- }
- }
- }
- }
- for (int i = 0; i < summ; i++) {
- printf("%f ", lst[i].data);
- }
- printf("Your list: \n");
- print(lst, summ);
- system("pause");
- }
- int main()
- {
- start:
- system("cls");
- printf("Nataliia Byshovets, IS-81, lab 6\n\n");
- int answer;
- printf("1 - input numbers.\n");
- printf("2 - print lists.\n");
- printf("3 - exit.\n\n");
- printf("What do you want to do?: "); scanf("%d", &answer);
- switch (answer)
- {
- case 1:
- {
- keyboard(); //робота з числами, введеними з клавіатури
- goto start;
- break;
- }
- case 2:
- {
- //output(); //виведення чисел з файлу
- goto start;
- break;
- }
- default:
- {
- break;
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement