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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2010, 18:51   #1
Proger_1
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 21
По умолчанию связанные списки

Дан список чисел. Нужно выводить этот спиок на экран, удалять из списка первый отрицательный элемент, проверять, если ли в списке одинаковые элементы.

Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <malloc.h>

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

int _tmain(int argc, _TCHAR* argv[])
{
	struct node a1;
	struct node *newPtr, *startt, *startt1, *startt2;
	//int mas=(*startt).data;
	a1.data=10;
	a1.nextPtr=NULL;
	struct node a2;
	a2.data=60;
	a2.nextPtr=&a1;
	struct node a3;
	a3.data=12;
	a3.nextPtr=&a2;
	newPtr=(node*) malloc(sizeof(struct node));
	(*newPtr).data=10;
	(*newPtr).nextPtr=&a3;
	startt=newPtr;
Код:
printf("1 - Vivod elementov\n2 - proverka na pustotu\n3 - Proverka odinakovih elementov\n----------------------------------\n");
		scanf("%d",&a);
		printf("---------------------------\n");
Код:
		//vivod spiska na ekran
		if (a==1)
		{
			startt1=startt;
			while ((*startt).nextPtr!=NULL) 
			{
				startt2=startt;
				printf("%d\n",(*startt).data);
				startt=(*startt).nextPtr;
			}
			printf("-------------------------\n");
		}
Код:
		//odinakovie elementi
		if (a==3)
		{
			if ((a1.data==a2.data) || (a2.data==a3.data) || (a1.data==a3.data)) 
			{
				printf("Estj odinakovie elementi\n-----------------------------\n");
			}
			else
			{
				printf("Net odinakovih elementov\n------------------------------\n");
			}
		}

	scanf("%s");
	return 0;
}
Я смог сделать только вывод спика. Поиск одинаковых элементов как видите сделан очень некрасиво, я просто сраниваю все переменные, а если переменных будет 100 ? Как тут быть ? Если пойму это, то пойму и как удалять отрицательный элемент, что бы не проверять каждую переменную на отрицание. Помогите пожалуйста
Proger_1 вне форума Ответить с цитированием
Старый 28.05.2010, 22:11   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Запоминаешь текущую переменную, потом идёшь заново по списку и считаешь кол-во переменных которые равные текущей. Если это значение больше одного, то в списке есть повторяющиеся элементы
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связанные списки в C++ Rembo Общие вопросы C/C++ 47 11.07.2016 12:45
Связанные списки с 3 списками b_julia Microsoft Office Excel 13 22.11.2010 15:57
Динамические структуры (связанные списки) Proger_1 Общие вопросы C/C++ 0 19.05.2010 21:34
Связанные списки Fezdipekla Microsoft Office Access 3 02.04.2010 22:07
связанные списки и не только.... owl-ka Microsoft Office Excel 1 11.02.2009 00:27