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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 16:32   #1
genya-yatsun
Пользователь
 
Регистрация: 25.12.2010
Сообщений: 10
По умолчанию Что это такое и как оно работает

Код:
struct student-----
student *Next;------
student *Head=0;-----

student *new_list=new student;-----


if(Head==0)
	  {Head=new_list;
	  new_list->Next=0;
	  }
	 else
	 {
         new_list->Next=Head;
         Head=new_list;
         }

Последний раз редактировалось Stilet; 16.01.2011 в 17:22.
genya-yatsun вне форума Ответить с цитированием
Старый 16.01.2011, 16:58   #2
Vard
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 21
По умолчанию

Если не обращать внимания на ошибки в синтаксисе, то ...
Я так понимаю что ------ это строки к которым ты хотел бы получить пояснения, ну что ж.

Код:
struct student{
student *Next;
};
Кажется должно быть так на самом деле

Это определение структуры student, с членом - указателем на student -Next, очевидно тут реализуется список студентов, так что Next будет использоваться для хранения адреса предыдущего студента из списка.

Код:
student *Head=0;
Указатель Head служит для хранения адреса последней на текущий момент структуры в списке. По умолчанию = NULL.

Код:
student *new_list=new student;
Это выделение памяти, не забудь потом освободить ее - delete new_list
Vard вне форума Ответить с цитированием
Старый 16.01.2011, 17:10   #3
genya-yatsun
Пользователь
 
Регистрация: 25.12.2010
Сообщений: 10
По умолчанию

Вот это тоже если можна...
Код:
student* tek_list=Head;
Head=Head->Next;

if(Head==0)
{Head=new_list;
new_list->Next=0;
}
else
{
new_list->Next=Head;
Head=new_list;
}

Последний раз редактировалось Stilet; 16.01.2011 в 18:55.
genya-yatsun вне форума Ответить с цитированием
Старый 16.01.2011, 17:31   #4
Vard
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 21
По умолчанию

Давай уже весь код целиком
Vard вне форума Ответить с цитированием
Старый 16.01.2011, 17:46   #5
genya-yatsun
Пользователь
 
Регистрация: 25.12.2010
Сообщений: 10
По умолчанию

From Stilet: Почему ты код не оформляешь по правилам? Ты хочешь чтоб я тему закрыл за неуважение? Если следующий пост не будет соответствовать правилам так и сделаю.

вот.....если можна комментарии каждой строчки чтобы разобраться

Код:
struct student{
        AnsiString fio;
        AnsiString groop;
        int score;
	 student *Next;
	};


char* file_name = "save.txt";

//Указатель на начало списка
student *Head=0;
int kol=0;
 void show_all();
 void add();
 void del_all();
 void search_name(AnsiString str);
  void sort();
  void save();
  void load();
   void add2(AnsiString new_name,AnsiString new_group,int new_score);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
// функция добавления в список
void add()
{


    if(Formate(Form1->Edit2->Text)=="" ||
        Formate(Form1->Edit1->Text)=="" ||
         Formate(Form1->Edit3->Text)=="")
      {MessageBox(NULL, "Не введено имя или групу!", "Предупреждение:", MB_OK | MB_ICONERROR );
        return;
      }
      if((Form1->Edit3->Text)<0 ||(Form1->Edit3->Text)>5  )
   {
   MessageBox(NULL, "Неверная оценка", "Ошибка:", MB_OK | MB_ICONERROR );
   return;}
 AnsiString new_name=Formate(Form1->Edit1->Text);
 AnsiString new_group=Formate(Form1->Edit2->Text);
 int new_score=StrToInt(Form1->Edit3->Text);
        student *new_list=new student;
        new_list->fio=new_name;
        new_list->groop=new_group;
        new_list->score=new_score;

	 if(Head==0)
	  {Head=new_list;
	  new_list->Next=0;
	  }
	 else
	 {
         new_list->Next=Head;
         Head=new_list;
         }
    kol++;
}
 // функция показывает ввесь список
   void show_all()
   {     Form1->StringGrid1->RowCount=0;
   student* tek_list=Head;
        int count=0;
while(tek_list){
        Form1->StringGrid1->Cells[0][count]=count+1;
        Form1->StringGrid1->Cells[1][count]=tek_list->fio;
	Form1->StringGrid1->Cells[2][count]=tek_list->groop;
        Form1->StringGrid1->Cells[3][count]=IntToStr(tek_list->score);
        count++;
         Form1->StringGrid1->RowCount++;
        tek_list=tek_list->Next;
		}
                 Form1->StringGrid1->RowCount--;
   }
 // функция подсчёта елементов списка
   int colich() {
        int count=1;
        if(Head==0) return 0;
     	student* tek_list=Head;
     while(tek_list->Next!=0) {count++; tek_list=tek_list->Next;}
     return count;
   }
 // функция обнуления ячейки в списке
 void clear(int i){
for(int j=0;j<5;j++) Form1->StringGrid1->Cells[j][i]="";
 }

void delete_number()
   {
     int a= StrToInt(InputBox("Удаление","Введите № удаляемого= ",0));
     if(a>colich() || a<=0) return;

       	student* tek_list=Head;
          int count=1;

          //если удаляем первый елемент
	if(count==a && Head->Next!=0)
	{


		Head=Head->Next;
                delete (tek_list);
                Form1->StringGrid1->RowCount=0;
                clear(0);
			return;
		}

          //если елемент единый
	if(a==1 && Head->Next==0)
	{
                delete(Head);
                Head=0;
                Form1->StringGrid1->RowCount=0;
                clear(0);
                return;
		}


              student* prev=Head;
    	while(tek_list->Next!=0)
		{

                 tek_list=tek_list->Next;
                 count++;
                 if(a==count && tek_list->Next==0)
                   {
                        prev->Next=0;
                        delete tek_list;
                           Form1->StringGrid1->RowCount=0;
                           return;
                   }
                 if(a==count)
                    {
                        prev->Next=prev->Next->Next;
                        delete tek_list;
                        Form1->StringGrid1->RowCount=0;
                        return;
                    }
                    prev=prev->Next;

                }

   }

Последний раз редактировалось Stilet; 16.01.2011 в 18:58.
genya-yatsun вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы *.blb что это такое и как с ними работать brato4karik Общие вопросы Delphi 1 15.04.2010 17:10
Что это такое и как это того... Alex Cones Общие вопросы Delphi 2 11.10.2009 12:04
как это работает и что оно вообще такое? kievlyanin Microsoft Office Excel 9 08.07.2009 14:33
кто знает что это такое и как исправить? Yury111 Безопасность, Шифрование 4 17.06.2009 08:59