Скопировать все отрицательные элементы исходного в новый список - C (СИ)
Формулировка задачи:
Однонаправленный линейный список, скопировать все отрицательные элементы в новый список.
Просто создаю список эл-тов.
Листинг программы
- #include <iostream.h>
- #include <stdio.h>
- #include <conio.h>
- #define N 5
- struct List
- { int data;
- List* next;};
- List *root,*q,*p, *t;
- int main()
- {
- int i;
- q=new List;
- cout <<"vvedite chisla:\n";
- cin >>q->data;
- root = q;
- for (i=1; i < N; i++)
- {
- q->next=new List;
- q = q ->next;
- cin >>q->data;
- q->next=NULL;
- }
- q = root;
- cout <<"Data:";
- while (q!=NULL)
- {
- cout <<" "<<q->data;
- q=q->next;
- }
- q = root;
- t = q;
- q = root;
- cout << "\nresult:";
- while (q!=NULL)
- {
- cout <<" "<<q->data;
- q=q->next;
- }
- cout <<"\n";
- system("pause");
- return 0;
- getch();
- }
Решение задачи: «Скопировать все отрицательные элементы исходного в новый список»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node_t
- {
- int data;
- struct node_t* next;
- } TList;
- int main()
- {
- TList* list = NULL;
- TList* newlist = NULL;
- TList* node, * tmp;
- int data;
- printf("input numbers: ");
- while (scanf("%d", &data))
- {
- node = (TList*) malloc(sizeof(TList));
- node->data = data;
- node->next = list;
- list = node;
- }
- printf("source: ");
- for (node = list; node; node = node->next)
- {
- printf("%d ", node->data);
- }
- printf("\n");
- for (node = list; node; node = node->next)
- {
- if (node->data < 0)
- {
- tmp = (TList*) malloc(sizeof(TList));
- tmp->data = node->data;
- tmp->next = newlist;
- newlist = tmp;
- }
- }
- printf("result: ");
- for (node = newlist; node; node = node->next)
- {
- printf("%d ", node->data);
- }
- printf("\n");
- system("pause");
- return 0;
- }
Объяснение кода листинга программы
В этом коде создается список (связанный список) с помощью динамического выделения памяти. Пользователю предлагается ввести некоторое количество целых чисел, после чего программа выводит исходный список, а затем копирует в новый список все отрицательные числа из исходного списка.
- Создаются две структуры:
TList
иnode_t
. - В функции
main()
создаются два указателя:list
иnewlist
, которые будут указывать на голову списка. - В цикле
while
пользователь вводит числа, которые добавляются в список. - Затем выводится исходный список с помощью цикла
for
. - Далее, в цикле
for
проходится по списку и проверяется условиеif
, если значениеdata
отрицательное, то создается новый узел, копируется значениеdata
и добавляется в новый список. - Выводится новый список с помощью цикла
for
. - В конце программы вызывается функция
system(
pause)
, чтобы программа не закрылась сразу, и пользователь мог увидеть результат. - Возвращается значение 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д