|
Вопрос # 5 494/ вопрос открыт / |
|
Здравствуйте, эксперты!
Я хочу узнать как можно создать список, добавить новый элемент к нему и удалить элемент.
 |
Вопрос задал: Aristotel (статус: Посетитель)
Вопрос отправлен: 12 июля 2011, 11:03
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Gooddy
Здравствуйте, Aristotel!
Отвечаю на вопрос так, как написано в условии. Т.к. небыло пояснений буду считать, что нужен список строк, например:
1. "Вася"
2. "Петя"
3. "Григорий"
Тут есть два варианта - использовать TStrings, или TList. TList помощнеее, но сложнее для пономания и использования, так что приведу пример с TStringList.
См. приложение.
 |
Ответ отправил: Gooddy (статус: 3-ий класс)
Время отправки: 12 июля 2011, 14:23
Оценка за ответ: 4
Комментарий к оценке: А можно как-то найти заданный элемент в списке и удалить его?
|
Мини-форум вопроса
Всего сообщений: 100; последнее сообщение — 15 июля 2011, 14:41; участников в обсуждении: 7.
Страницы: [1] [2] [3] [4] [5] [Следующая »]
|
min@y™ (статус: Доктор наук), 12 июля 2011, 11:04 [#1]:
А список из каких элементов нужен?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 12 июля 2011, 11:05 [#2]:
наверное правильнее спрашивать так - какой именно список? TListBox, TList, связанный список...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Aristotel (статус: Посетитель), 12 июля 2011, 11:07 [#3]:
А хер его знает
|
|
Вадим К (статус: Академик), 12 июля 2011, 11:07 [#4]:
Тогда точно никто не поможет.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 12 июля 2011, 11:10 [#5]:
Цитата (Aristotel):
А хер его знает
Супер!
Вызовет тебя начальник, и спросит: на сколько тебе повысить зарплату? А ты вот так ему и ответь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aristotel (статус: Посетитель), 12 июля 2011, 11:10 [#6]:
А какая разница между TListBox, TList и связанным списком?
|
|
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™ (статус: Доктор наук), 12 июля 2011, 11:22 [#9]:
Цитата (Aristotel):
А какая разница между TListBox, TList и связанным списком?
Такая же, как между х...ем и трамвайной ручкой.
Цитата (Aristotel):
Ну вообще то мне нужно сделать прогу как эта только на Delphi токо она почему то не пашет
А что делает эта прога?
Цитата (Aristotel):
/* ====== glavnaya funktsiya ====== */
Упал под стол.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aristotel (статус: Посетитель), 12 июля 2011, 11:23 [#10]:
Значит мне нужен связанный список
А почему у меня эта прога не работает?
|
|
Aristotel (статус: Посетитель), 12 июля 2011, 11:25 [#11]:
Упал под стол - специально для тебя старался))
|
|
Вадим К (статус: Академик), 12 июля 2011, 11:26 [#12]:
А компилировать пробовали? У меня точно скомпилировалась и даже похоже работает.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
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™ (статус: Доктор наук), 12 июля 2011, 11:29 [#14]:
Цитата (Aristotel):
А почему у меня эта прога не работает?
А хер его знает!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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™ (статус: Доктор наук), 12 июля 2011, 11:33 [#17]:
Скопипастил в dev-c++, сбилдилось с первого раза и работает.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aristotel (статус: Посетитель), 12 июля 2011, 11:34 [#18]:
А Вы компилировали борландским компилятором и у вас нормально скомпилировалась без ошибок?
|
|
min@y™ (статус: Доктор наук), 12 июля 2011, 11:34 [#19]:
Цитата (Aristotel):
подъебал +1
Ну ты ж первый начал.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aristotel (статус: Посетитель), 12 июля 2011, 11:35 [#20]:
min@y-что за dev-c++ компилятор?
|
Страницы: [1] [2] [3] [4] [5] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|