|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.06.2012, 19:01 | #1 |
Новичок
Джуниор
Регистрация: 03.06.2012
Сообщений: 1
|
Двусвязный Нециклический список
хранит вещ. числа
операции: 1)Вставка элемента в список – новые элементы добавляются в конец списка 2)Удаление элементов – всех превышающих задаваемое значение. 3)Поиск элемента - по вводимому значению. 4)Сортировка списка по убыванию. 5)Распечатка всех элементов списка (на экран) +открытие файла, сохранение списка в файл помогите ,плиз,исправить прогу. заранее спасибо) struct LIST//создание шаблона списка { double value; LIST *next; LIST *prev; } *head = NULL; //------------------------------------------------------- void FreeAll(void) // { LIST *p; for( ; head !=NULL ; head = p) { p= head->next; // delete head; head = NULL; // } } //------------------------------------------------------ LIST *CreateNew(double val) // { LIST *pnew = new LIST; // if(!pnew) { ShowMessage(""); return NULL; } else { pnew->value = val; pnew->next = NULL; pnew->prev = NULL; return pnew; } } //------------------------------------------------------- LIST *Searching(LIST *head, double value) { LIST *p; for(p = head;p!=NULL;p=p->next) { if(p->value==value) return p; } return NULL; } //------------------------------------------------------- LIST *Sorting(LIST *head, double val) //Сортировка по убыванию { LIST*pnew=CreateNew(val);//Создание нового элемента if (!pnew) return head; LIST *p, *prev=head; if(!head) return pnew;//spisok pust for(p=head; p!=NULL; p=p->next) { if(p->value> val) {prev->next=pnew; p->next=pnew; return head; } prev=pnew; } return head; } //---------------------------------------------------- LIST *Insert(LIST *head, double val) { LIST * element = CreateNew(val); if(head == NULL) { head = element; return head; } else { LIST *p = head; for(; p->next != NULL; p = p->next); p->next = element; element->prev = p; return head; } } //------------------------------------------------------ LIST * DeleteElement(LIST *head, double val) { LIST *p, *pp = NULL; bool flag = false; for(p = head; p!=NULL; p = p->next) { if(p->value == val) { flag = true; if(pp == NULL) { if(p->next) p->next->prev = NULL; // head = p->next; } else { if(p->next) p->next->prev = pp; pp->next = p->next; // ???? ???? p->next == NULL } delete p; return head; } pp = p; } if(!flag) ShowMessage("?????? ???????? ???"); return head; } //------------------------------------------------------ void DeleteElement2(double val) { if(head != NULL) { LIST *p = head, *pp = NULL; for(; p != NULL { if(p->value > val) { pp = p->next; head = DeleteElement(head, p->value); p = pp; } else p = p->next; } } } //--------------------------------------------------------------------------- int OpenList(AnsiString FileName) { FILE*pt; //Если файл не открыт возвращаем -1 if((pt=fopen(FileName.c_str(),"rt") )==NULL) return -1; else { Form1->Memo1->Clear(); //Очистка Memo1 //Заполняем список данными из файла int i=0; AnsiString buf; char buf2[10]; while(!feof(pt)) { fgets(buf.c_str(),10,pt); if(strlen(buf2)>0) { head=Insert(head,StrToFloat(buf2)); // buf=""; } i++; } pt=head; //Перевод указателя чтения на начало списка return 0; } fclose(pt); // } //--------------------------------------------------------------------------- void SaveToFile(LIST*head) { char buf[20] FILE *pt=fopen(FileName.c_str(),"w"); if(!pt) {ShowMessage("ne mogu steret file"); return; } while(head) {double value=head->value; ftoa(value,buf,10); fputs(buf,pt); fputs("\n',pt); head=head->next; } fclose(pt); } //---------------------------------------------------------------------------- void MyPrint() { Form1->Memo1->Clear(); LIST *p; for(p=head;p!=NULL;p=p->next) { Form1->Memo1->Lines->Add(FloatToStr(p->value)); } } Последний раз редактировалось nathaly; 03.06.2012 в 21:28. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двусвязный список | Jess Mailes | Помощь студентам | 6 | 03.06.2012 21:47 |
Двусвязный список в C++. | ЕвгенийЕрмак | Помощь студентам | 0 | 03.05.2012 20:21 |
Двусвязный Список. | loki_man | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 23.02.2012 22:59 |
Двусвязный список | zais | Общие вопросы C/C++ | 3 | 20.11.2011 08:40 |
Двусвязный список | Даsha | Помощь студентам | 3 | 26.06.2011 11:45 |