Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2021, 23:40   #1
Smehota
Новичок
Джуниор
 
Регистрация: 07.05.2021
Сообщений: 1
По умолчанию Работа со списками

Есть односвязный и двусвязный списки.

Нужно:

1. Создать ещё один односвязный список, в который поместить все элементы которые меньше заданного числа с первых двух списков.

2. Создать ещё один односвязный список, в который поместить все элементы кроме нулевого с первых двух списков.

Помогите пожалуйста с этими заданиями, не понимаю как это реализовать и нигде не могу найти(

Код:

Код:
#include <iostream>
#include <windows.h>
 
using namespace std;
 
//------------------------------------------------ОДНОСВЯЗНЫЙ СПИСОК---------------------------------
 
typedef struct Node
{
    int item;
    Node* next;
} Node;
 
void addLast_1(Node** head, int data)
{
   
    Node* temp = (Node*)malloc(sizeof(struct Node));
    temp->item = data;
    temp->next = NULL;
 
    if ((*head) == NULL)
        (*head) = temp;
   
    else
    {
        Node* lastNode = *head;
        while (lastNode->next != NULL)
        {
            lastNode = lastNode->next;
        }
 
   
        lastNode->next = temp;
    }
}
 
 
void printList_1(Node* head)
{
   
    for (Node* t = head; t != NULL; t = t->next)
    {
        printf("%d ", t->item);
    }
    printf("\n");
}
 
//--------------------------------------------ДВУСВЯЗНЫЙ СПИСОК---------------------------------------
typedef struct NodeT {
    int item;
    NodeT * next, * prev;
} NodeT;
 
 
void addLast_2(NodeT** head, int data)
{
    
    NodeT* new_node = new NodeT();
    NodeT* last = *head; 
    new_node->item = data;
    new_node->next = NULL;
    if (*head == NULL)
    {
        new_node->prev = NULL;
        *head = new_node;
        return;
    }
    while (last->next != NULL)
        last = last->next;
    last->next = new_node;
    new_node->prev = last;
}
 
void printList_2(NodeT* head)
{
    //iterate the entire linked list and print the data
    for (NodeT* t = head; t != NULL; t = t->next)
    {
        printf("%d ", t->item);
    }
    printf("\n");
}
 
int main()
{
 
    Node* first = NULL;
    NodeT* second = NULL;
  
    //Односвязный список
    addLast_1(&first,2);
    addLast_1(&first,0);
    addLast_1(&first,5);
    addLast_1(&first,9);
    addLast_1(&first,7);
    printList_1(first);
 
    
    cout << endl << endl;
 
    //Двусвязный список:
    addLast_2(&second,8);
    addLast_2(&second,1);
    addLast_2(&second,0);
    addLast_2(&second,3);
    addLast_2(&second,0);
    printList_2(second);
 
    return 0;
}
Smehota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списками NoviceYola Паскаль, Turbo Pascal, PascalABC.NET 1 18.04.2014 11:44
Работа со списками LeNZZZ Microsoft Office Excel 1 21.11.2012 17:36
Работа со списками Kumigy Помощь студентам 1 23.12.2010 16:24
c++. Работа со списками megavolt91 Помощь студентам 0 14.06.2009 21:31
Работа со списками Dimo444ka Помощь студентам 2 01.06.2008 16:34