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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 20:47   #1
Jugger
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 99
По умолчанию Списковая структура и указатели

Не сложный вопрос, но никак не соображу

Вот есть структура
Код:
struct element {
		element();
		int x;
		element* next;
		element(int xx){
			x=xx;
			next=0;
		};
	} ;
и указатель

Код:
element * tt;
Надо передвинуть указатель на следующий элемент

tt=tt.next не работает, ибо слева тип элемент а справа тип указатель на элемент

Как сделать ?
Jugger вне форума Ответить с цитированием
Старый 08.03.2011, 08:52   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
ибо слева тип элемент а справа тип указатель на элемент
Код:
element * tt;
вы сами себе противоречите
p51x вне форума Ответить с цитированием
Старый 08.03.2011, 13:53   #3
Star_sky
Новичок
Джуниор
 
Регистрация: 05.03.2011
Сообщений: 2
По умолчанию

element(int xx){
x=xx;
next=0;
что за поле и для чего?

Я конечно нуб но с указателями знаком итак
Во-первых одним только кодом
element *tt не отделаться
надо к нему добавить
tt= new element;
и заполнить список хотя бы так
Код:
void AddToEnd(element **a,int x){
	elemnt *r,*p;
	r=new list;
	r->info=x;
	r->next=NULL;
	if (*a==NULL)
		*a=r;
	else
	{p=*a;
	while (p->next!=NULL) p=p->next;
		p->next=r;
		
	}
}
где под полем инфо предполагаются все ваши поля информации об элементе

Последний раз редактировалось Stilet; 08.03.2011 в 16:47.
Star_sky вне форума Ответить с цитированием
Старый 08.03.2011, 20:14   #4
Jugger
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 99
По умолчанию

Извиняюсь, не element * tt, а element tt

element(int xx){
x=xx;
next=0;
}

Это функция добавления в список .. если не ошибаюсь - она называется конструктор ? Тем не менее при отстуствии element() и присутствии только вышеприведенной функции компилятор ругался на отсутсвие конструктора

Приведу весь код все таки

Код:
#include "stdafx.h"
#include "iostream"
using namespace std;
#include <stdlib.h>
#define n 10


// ifstream in;  // Поток in будем использовать для чтения
      
	struct element {
		element();
		int x;
		element* next;
		element(int xx){
			x=xx;
			next=0;
		};
	} ;

	class spisok{
	public:
		element* perv;
		element* posl;
		
		void addtolist(int x);
	} sp;

	void addtolist(int x){
		element * t=sp.posl;
		sp.posl=new element(x);
		if(sp.perv==0) sp.perv=sp.posl;
		else t->next=sp.posl;
		
	};

	void prom(element  tt,int i){                    //Promativanie na i elementov
		
			int ii=0;
					while(ii<i){                     
						tt=tt.next;
						ii++;
					};
		};


	void sort(spisok sp){
		

		int i;
		element  tmp,uk,tt;
			tt.next=sp.perv;

		for(;i<n-1;i++){
			uk.next=sp.perv;
			int max=-32767;
		        while(tt.next!=sp.posl){                       //Naxodim max element
					prom(tt,i);
					
					max=tt.x>max?tt.x:max;
					tt=tt.next;
		       };
		    prom(uk,i);
		    tmp=tt;                                                //Meneaem tt na uk
		    tt.x=uk.x;
		    uk.x=tmp.x;
		};

	};


	int main(){
		system("cls");
		int e,i=0;
		while (i<n){
		      cin>>e;
			  
			  addtolist(e);
		  i++;
		};

		sort(sp);

		while (i<n){
		      cout<<e;
			  
			  
		  i++;
		};
		

		
		
		return 0;
	}
И вот что не нравится компилятору

Код:
1>------ Build started: Project: laba, Configuration: Debug Win32 ------
1>  laba.cpp
1>c:\users\пользователь\documents\visual studio 2010\projects\laba\laba\laba.cpp(44): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'element *' (or there is no acceptable conversion)
1>          c:\users\пользователь\documents\visual studio 2010\projects\laba\laba\laba.cpp(22): could be 'element &element::operator =(const element &)'
1>          while trying to match the argument list '(element, element *)'
1>c:\users\пользователь\documents\visual studio 2010\projects\laba\laba\laba.cpp(64): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'element *' (or there is no acceptable conversion)
1>          c:\users\пользователь\documents\visual studio 2010\projects\laba\laba\laba.cpp(22): could be 'element &element::operator =(const element &)'
1>          while trying to match the argument list '(element, element *)'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Спасибо за шмат кода в верхнем посте, попробую сейчас разобраться .. функция добавления в список у меня есть, но похоже несколько другая
Jugger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура. Си Usefur Помощь студентам 0 25.12.2010 16:53
C++. Структура. bpystep Помощь студентам 12 24.11.2009 00:28
структура Cpluser Общие вопросы C/C++ 4 16.06.2009 17:42
Структура SL1CK Общие вопросы C/C++ 8 08.06.2009 21:31
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39