Скопировать все отрицательные элементы исходного в новый список - 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, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д