Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 494

/ вопрос открыт /

Здравствуйте, эксперты!
Я хочу узнать как можно создать список, добавить новый элемент к нему и удалить элемент.

Aristotel Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Aristotel (статус: Посетитель)
Вопрос отправлен: 12 июля 2011, 11:03
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Gooddy

Здравствуйте, Aristotel!
Отвечаю на вопрос так, как написано в условии. Т.к. небыло пояснений буду считать, что нужен список строк, например:
1. "Вася"
2. "Петя"
3. "Григорий"

Тут есть два варианта - использовать TStrings, или TList. TList помощнеее, но сложнее для пономания и использования, так что приведу пример с TStringList.

См. приложение.

Приложение:
  1. var
  2.  
  3.  
  4. begin
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12. end;
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  


Ответ отправил: Gooddy (статус: 3-ий класс)
Время отправки: 12 июля 2011, 14:23
Оценка за ответ: 4

Комментарий к оценке: А можно как-то найти заданный элемент в списке и удалить его?

Мини-форум вопроса

Всего сообщений: 100; последнее сообщение — 15 июля 2011, 14:41; участников в обсуждении: 7.

Страницы: [1] [2] [3] [4] [5] [Следующая »]

min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 11:04 [#1]:

А список из каких элементов нужен?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 12 июля 2011, 11:05 [#2]:

наверное правильнее спрашивать так - какой именно список? TListBox, TList, связанный список...
Галочка "подтверждения прочтения" - вселенское зло.
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:07 [#3]:

А хер его знает
Вадим К

Вадим К (статус: Академик), 12 июля 2011, 11:07 [#4]:

Тогда точно никто не поможет.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 11:10 [#5]:

Цитата (Aristotel):

А хер его знает

Супер!
Вызовет тебя начальник, и спросит: на сколько тебе повысить зарплату? А ты вот так ему и ответь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:10 [#6]:

А какая разница между TListBox, TList и связанным списком?
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:12 [#7]:

Ну вообще то мне нужно сделать прогу как эта только на Delphi токо она почему то не пашет
Вот код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <malloc.h>
#define QUE struct que /* tip dannih */
QUE
{
int info;
QUE *next;
};
void insert(QUE **q, int item);
void display(QUE * q);
QUE * create_list();
QUE *q=NULL; /* ob'yavlenie spiska */
/* ======= funktsiya vivoda spiska ====== */
void display(QUE * q)
{QUE * current = q;
printf("\nLIST=");
if (current)
{
while(current)
{printf("%d-->", current->info);
current = current ->next;
}
printf("NULL");
}
else
printf("pustoy");
printf("\n");
}
/* ====== funktsiya sozdaniya spiska ====== */
QUE * create_list()
{QUE * list=NULL;
int done=1, info, c;
printf("Creation of list:\n");
while(done)
{printf("Add new element? (Y/N)");
c=getch();
c=toupper(c);
switch(c)
{case 'Y':printf("\n Element=");
scanf("%d", &info);
insert(&q, info);
break;
case 'N': done=0;
break;
}
}
return (list);
}
/* === funktsiya dobavleniya elementa k spisku === */
void insert (QUE **q, int item)
{
QUE *current=*q;
QUE *previous=0;
QUE *new_node;
while(current)
{
previous=current;
current=current->next;
}
new_node=(QUE*) malloc (sizeof (QUE));
new_node->info=item;
if (previous)
{
new_node->next=previous->next;
previous->next=new_node;
}
else
{
*q=new_node;
(*q)->next=0;
}
}
// Функция исключения
QUE* Delete (QUE **q, int item)
{
QUE * current = *q; // Входной список
QUE * new_node = NULL; // Наш новый список
while(current) // Проходим по всему списку
{
if(current->info == item) // Если находим наш элемент
{
current = current ->next; // Перемещаемся на следующий
} else // иначе
{
insert(&new_node, current->info); // Вставляем элемент текущего списка в наш новый
current = current ->next; // перемещаемся дальше
}
}
return new_node; // возвращаем наш новый список
}
/* ====== glavnaya funktsiya ====== */
int main()
{
create_list();
display(q);
printf("\n");
display(Delete(&q, 1));
getch();
return 0;
}
Вадим К

Вадим К (статус: Академик), 12 июля 2011, 11:20 [#8]:

вот - в этом примере связанный список.
А в чем разница между TListBox, TList и связанным списком...
первое - это компонент, который отображает список строк, второе - класс, фактически массив указателей, а третье - оно в примере выше.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 11:22 [#9]:

Цитата (Aristotel):

А какая разница между TListBox, TList и связанным списком?

Такая же, как между х...ем и трамвайной ручкой.

Цитата (Aristotel):

Ну вообще то мне нужно сделать прогу как эта только на Delphi токо она почему то не пашет

А что делает эта прога?

Цитата (Aristotel):

/* ====== glavnaya funktsiya ====== */

Упал под стол.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:23 [#10]:

Значит мне нужен связанный список
А почему у меня эта прога не работает?
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:25 [#11]:

Упал под стол - специально для тебя старался))
Вадим К

Вадим К (статус: Академик), 12 июля 2011, 11:26 [#12]:

А компилировать пробовали? У меня точно скомпилировалась и даже похоже работает.
Галочка "подтверждения прочтения" - вселенское зло.
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:28 [#13]:

Я пробовал компилить но у меня пишет: Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib ll
И ещё Error 2 fatal error LNK1120: 1 unresolved externals C:\Documents and Settings\USER\Мои документы\Visual Studio 2008\Projects\PS10\ll\Debug\ll.exe 1 ll
min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 11:29 [#14]:

Цитата (Aristotel):

А почему у меня эта прога не работает?

А хер его знает!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:31 [#15]:

min@y-подъебал +1
Вадим К

Вадим К (статус: Академик), 12 июля 2011, 11:32 [#16]:

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

этот код не будет компилироваться в visual studio - нужно немного компилятору вправить мозг, что бы он понимал этот код.
Лучше наверное его компилировать старым borland C++ compiler.

Но если есть большое желание, то можно для начала указать тип проекта - console application, а main заменить на _tmain (вроде так)
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 11:33 [#17]:

Скопипастил в dev-c++, сбилдилось с первого раза и работает.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:34 [#18]:

А Вы компилировали борландским компилятором и у вас нормально скомпилировалась без ошибок?
min@y™

min@y™ (статус: Доктор наук), 12 июля 2011, 11:34 [#19]:

Цитата (Aristotel):

подъебал +1

Ну ты ж первый начал.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aristotel

Aristotel (статус: Посетитель), 12 июля 2011, 11:35 [#20]:

min@y-что за dev-c++ компилятор?

Страницы: [1] [2] [3] [4] [5] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.04 сек.