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

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

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

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

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

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

Прошу проверить правильность кода и помочь написать его дальше.
Написать программу, обеспечивающую работу с динамическими структурами - связанными списками. Элементами спика являются целые числа. Программа должна содержать 5 ф-ций:
1.Проверка, есть ли в списке хотя бы два одинаковых эл-та
2.Удаление из непустого списка первый отрицательный эл-т, если такой есть
3.Определение пустой список или нет
4.Вывод эл-ов списка на экран
5.Вывод на экран меню(должно содержать пункты для демонстрации работы ф-ций и выход).
Код:
#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;
	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;

	int a;

           //menju
	for(int h=1; h<100; h++)
	{
		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");
			}
		}
		
		//pustoj spisok ili net
		if (a==2)
		{
			if ((*startt).data==0) 
			{
				printf("Spisok pust\n-----------------------------\n");
			}
			else printf("V spiske estj zapisi\n------------------------------\n");
		}
	}

	scanf("%s");
	return 0;
}
Пока делал без функций, а в основном блоке программы. Сделал вывод списка, проверку ну пустоту, поиск одинаковых эл-ов и меню. Вроде как работает, но всё же посмотрите пожалуйста код, кажется мне что здесь может быть что-то неверно, т.к ну врубаюсь я в некоторые строки, например такие:
Код:
a3.nextPtr=&a2;
newPtr=(node*) malloc(sizeof(struct node));
(*newPtr).data=10;
(*newPtr).nextPtr=&a3;
startt=newPtr;
Переписывал это с доски у учителя, а сам толкмо не знаю что это, с указателями вообще не дружу.

Поправте если здесь что не так, и осталось ещё сделать удаление отрицательного элемента. Не представляю как можно реализовать удаление отрицательной записи из спика.
Proger_1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связанные динамические данные. patisson74 Помощь студентам 4 17.04.2010 22:30
Динамические структуры данных. Списки. dmit365 Помощь студентам 1 20.12.2009 23:12
Динамические структуры данных - списки FoOtBaLiIsT Общие вопросы C/C++ 0 18.03.2009 22:10
сохранение структуры (динамические списки очередей) в файле AlenaZ Помощь студентам 2 09.06.2008 20:14