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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2017, 20:14   #21
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Это с какого кода?

Код:
while (head < head->next)
	{
		printf("%c ", head->key);
		head = head->next;
		vuvod++;
	}
И какое отношение он имеет к твоему?
Код:
*q=START; 
 do{
        printf("|%c|\t",q->data);
        q=q->next;
    }while(q!=START);
11.jpg

Ты начинаешь со START, но начало уже не START (он должен быть удалён) - это первое, что пришло мне в голову.

Но, лучше подумай над:
10.jpg
ura_111 вне форума Ответить с цитированием
Старый 16.03.2017, 20:21   #22
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

1. Это с конца вашего кода
2. Как мне тогда организовать вывод?
3. Пусть уже будет с тремя, мне уже завтра утром надо сдать эту работу так что сейчас вопрос стоит как исправить так чтобы работало, а потом уже можно вернуться и подумать.
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 16.03.2017, 20:38   #23
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Та, я каждый день такое слышу...
Тестируй:

Код:
#include <stdio.h>

struct list
{
	char key;
	list* next;
};

int main()
{
	list *head = new list;	head->key = 'p';
	list *h1 = new list;	  h1->key = 'a';  
	list *h2 = new list;	  h2->key = 'p';   
	list *h3 = new list;	  h3->key = 'p';   
	list *h4 = new list;	  h4->key = 'a';   
	
	head->next = h1;
	h1->next = h2;
	h2->next = h3;
	h3->next = h4;
	h4->next = head;

	int vuvod;
	int n = 4; // количество узлов

	// Вывод на экран первоначального массива
	vuvod = 0;
	while (vuvod < n)
	{
		printf("%c ", head->key);
		head = head->next;
		vuvod++;
	}
	printf("%c ", head->key);
	printf("\n");
	////////////////////Сама программа/////////////////////////////
	list *one = head;
	list *two = one->next;
	list *fre = two->next;
	head = one->next;
	int kol = n;
	bool flag = false;
	vuvod = 0;
	while (vuvod < kol)
	{
		if (two->key == 'p' && fre->key == 'a')
		{
			one->next = fre;
			two = one->next;
			fre = two->next;
			n--;
			if (vuvod == 0)
				flag = true;
		}
		else
		{
			one = one->next;
			two = two->next;
			fre = fre->next;
		}
		vuvod++;
	}
	if (two->key == 'p' && fre->key == 'a' && flag == false)
	{
		one->next = fre;
		head = head;
	}
	else
		head = fre;
	///////////////////////////////////////////////////
	vuvod = 0;
	while (vuvod < n)
	{
		printf("%c ", head->key);
		head = head->next;
		vuvod++;
	}
	printf("%c ", head->key);
	printf("\n");

	int num;
	scanf("%d", &num); // чтобы консоль быстро не закрывалась
	return 0;
}
ura_111 вне форума Ответить с цитированием
Старый 16.03.2017, 20:43   #24
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Ну ты понял, да?
Я поменял условие "(head < head->next)"...
Не знаю, может моя недоработка это...
ura_111 вне форума Ответить с цитированием
Старый 16.03.2017, 21:23   #25
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

И ещё одно в моём коде: вроде надо ещё один шаг сделать после:
Код:
	printf("%c ", head->key);
	printf("\n");
т.е.
Код:
	printf("%c ", head->key);
	printf("\n");
        head=head->next
потому что "head" (вроде указывает на последний узел).
(но это только в конце вывод, а не вначале).

Попробуй удалить - добавить несколько узлов - удалить снова.

Последний раз редактировалось ura_111; 16.03.2017 в 21:39.
ura_111 вне форума Ответить с цитированием
Старый 17.03.2017, 00:17   #26
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Теперь первый элемент убегает в конец, и этот последний printf выводит лишний элемент
Насылаю баги по фотографии

преимущественно себе
CortesGames вне форума Ответить с цитированием
Старый 17.03.2017, 00:37   #27
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Баги:






Насылаю баги по фотографии

преимущественно себе

Последний раз редактировалось CortesGames; 17.03.2017 в 00:41.
CortesGames вне форума Ответить с цитированием
Старый 17.03.2017, 00:42   #28
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Это что, мой код так реагирует на информацию?
ura_111 вне форума Ответить с цитированием
Старый 17.03.2017, 01:35   #29
CortesGames
Пользователь
 
Аватар для CortesGames
 
Регистрация: 23.10.2016
Сообщений: 86
По умолчанию

Да, я теперь его не трогал, это чисто ваш код так творит. Я же говорил что он чудит и без меня.

Мой код который я выше кидал работает в таких ситуациях "как часы", вот только он не умеет удалять Р если оно на первом или на последнем месте перед А.
Насылаю баги по фотографии

преимущественно себе

Последний раз редактировалось CortesGames; 17.03.2017 в 01:39.
CortesGames вне форума Ответить с цитированием
Старый 17.03.2017, 01:49   #30
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Используй оригинал (последнюю мою программу), потому что ты мог не так что-то себе перенести...

Выведи "n" для каждого случая (прям в консоли сделай).

Скриншоты покажи.
ura_111 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ удаление элемента списка NinjaNoob Помощь студентам 1 28.01.2013 04:01
Сортировка однонаправленого списка вставками. gvilon Паскаль, Turbo Pascal, PascalABC.NET 0 08.11.2011 23:39
Удаление элемента из списка bpystep Помощь студентам 4 09.07.2010 14:55
Удаление элемента из списка Ghost_gg Паскаль, Turbo Pascal, PascalABC.NET 2 30.05.2010 20:43
Удаление последнего элемента из списка и реверс этого списка. Goose Общие вопросы C/C++ 8 16.05.2010 16:12