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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2021, 16:48   #1
Peniel
Новичок
Джуниор
 
Регистрация: 22.09.2021
Сообщений: 1
По умолчанию linked list( однонаправленный список)

Создать однонаправленный список из случайных целых чисел и преобразовать его в два списка. Первый должен содержать только положительные числа, а второй – только отрицательные. Затем удалить элементы по модулю меньшие 5
---------------------------------------------------------------------------------------------------------------
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <iostream> 
#include <iomanip> 
using namespace std;

struct node
{
	int data;
	node* link;
};

void Create(node** begin, node** end) {
	node* t = (node*)malloc(sizeof(node));
	t->data = rand() % 100 - 50;
	t->link = NULL;
	if (*begin == NULL) 		// Формирование первого элемента
		*begin = *end = t;
	else {
		(*end)->link = t;		// Добавление в конец
		*end = t;
	}
}
/*
void CreateNew(node** begin , node** end, int d) {
	node* t = (node*)malloc(sizeof(node));
	t->data = d;
	t->link = NULL;
	if (*begin == NULL) 		// Формирование первого элемента
		*begin = *end = t;
	else {
		(*end)->link = t;		// Добавление в конец
		*end = t;
	}
}

*/
void View(node* begin)
{
	node* t = begin;
	if (begin == NULL) {
		cout << "The Linked list is empty" << endl;
		return;
	}
	while (t != NULL) {
		cout << t->data << setw(5);
		t = t->link;
	}
}
 
	 

int main()
{

	node* begin = NULL;
	node* end = NULL;
	int size;
	cout << "Enter the number of nodes" << endl;
	cin >> size;
	int count = 0;
	while (count < size) {
		count++;		// repeat=1 – продолжение ввода данных
		Create(&begin, &end);

	}
	View(begin);
/*
	node* N = (node*)malloc(sizeof(node));
	N->link = NULL;
	node* K = (node*)malloc(sizeof(node));

	//node* positive = (node*)malloc(sizeof(node));

	while (begin != NULL)
	{
		if (begin->data > 0)
		{
			CreateNew(&N, &K, begin->data);
			K = K->link;
			begin = begin->link;
		}

	}
	cout << "List with positives value :";
	View(N);
	cout << endl;
	cout << "List with negatives Value :";
	View(begin);
	cout << endl;
	*/
	 
	return 0;
}

Я составил список, но не могу разделить его на две части

Последний раз редактировалось BDA; 23.09.2021 в 00:05.
Peniel вне форума Ответить с цитированием
Старый 23.09.2021, 00:00   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Прикольно..
Где связь с линкером в названии темы и с тем кодом что в посте?
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 27.09.2021, 20:32   #3
maks1331
Форумчанин
 
Аватар для maks1331
 
Регистрация: 20.12.2016
Сообщений: 270
По умолчанию

Я не понял зачем в функцию заполнения списка передавать еще и конец.

Создайте функцию разделения списка, куда передадите разделяемый и заполняемый, принцип должен быть примерно такой:

1) Читаем блок1
1.1) Если значение > 0
1.1.1) Смещаем указатель и переходим к пункту 1

1.2) Если значение < 0 и список2 пустой
1.2.1) Инициализируем список2 блоком1
1.2.2) Если блок1 это начало списка1, пусть начало списка1 будет блок2
1.2.3) Если блок1 это не начало списка1, пусть следующий элемент списка1 будет блок2

1.3) Если значение < 0 и список2 уже содержит хотя бы 1 блок
1.3.1) Пусть следующий блок списка2 будет блок1
1.2.2) Если блок1 это начало списка1, пусть начало списка1 будет блок2
1.2.3) Если блок1 это не начало списка1, пусть следующий элемент списка1 будет блок2

1.4) Смещаем указатели и переходим к пункту 1
формошлеп.рф
witech.su

Последний раз редактировалось maks1331; 27.09.2021 в 20:39.
maks1331 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
lock-free linked list kivkiv Общие вопросы C/C++ 8 06.01.2016 03:28
Linked List вопросы Kengoo Общие вопросы C/C++ 2 26.10.2015 19:58
Linked List. Не могу найти ошибку в коде:( BroBoa Общие вопросы по Java, Java SE, Kotlin 1 31.01.2013 22:23
Вставка в развёрнутый связный список (Unrolled linked list) Akron Общие вопросы по Java, Java SE, Kotlin 1 17.10.2011 07:28
Связанный список (Linked list). lnter Помощь студентам 0 12.04.2010 17:58