Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Односвязный линейный список

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
#genocid#



Зарегистрирован: 27.02.2003
Сообщения: 1

СообщениеДобавлено: Чт Фев 27 2003 06:03    Заголовок сообщения: Односвязный линейный список Ответить с цитатой

Народ если не тяжело киньте пример односвязного линейного списка со вставкой и удалением элемента .(началась аттестация появляются хвосты)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Someone
Гость





СообщениеДобавлено: Чт Фев 27 2003 16:28    Заголовок сообщения: Односвязный линейный список - пример Ответить с цитатой

Вот тебе на Си под дос:
#include
#include
#include
#include


struct element //Описание типа
{
char str[10]; //Полезная информация
int key; //Ключ
element* next; //Указатель на следующий
} *list=NULL; //Описание списка, list-указатель на первый элемент

element* find(element* list, int key) //Функция поиска
{
element* current=list; //Указатель на текущий элемент

while (current!=0 & current->key!=key)
{ current=current->next; }

return current; //Возвращает указатель на элемент с ключем, равным 'key'

}

element* find_place(element* list, int key) //Функция поиска места всавки
{
element* current=list; //Указатель на текущий элемент
element* previous=NULL; //Указатель на предыдущий элемент

while (current!=NULL & current->key next; }

return previous; //Возвращает указатель на элемент с ключем, меньшим 'key'

}

void add(element* &place, element* x) //Функция всавки элемента
{
x->next = place;
place = x;
}


void del(element* &x) //Функция удаления элемента из списка
{
element* e=x; //Запоминаем указатель на удаляемый элемент
x = x->next; //Перекидываем указатель на следующий
delete e; //Освобождение памяти
}

element* create(char str[10], int key) //Функция создания элемента
{
element* x = new element; //Выделение памяти

for (int i=0; istr[i] = str[i]; // Заполнение
x->key = key; // полей
x->next= NULL;
return x;
}

void output(element* list)
{
element* current=list;
int i=1;

printf("Содержимое списка\n");
printf("Номер Текст Ключ \n");
while(current!=NULL)
{ printf("%-10d%-20s%-10d\n",i++,current->str,current->key);
current = current->next; }
}

void main()
{
clrscr();
int n=0; //Кол-во элементов
char str[10]; //Строка
int key;
element *place,*x;


printf("Введите количество элементов:");
scanf("%d",&n);

// printf("Текст Ключ \n");
for (int i=0; inext,x); //Вставка в промежуток
else add(list,x); //Первый элемент
}

clrscr();
output(list);
getch();

printf("Введите ключ удаляемого элемента: ");
scanf("%d",&key);
if(find(list,key)) //Поиск элемента
{ place = find_place(list,key); //Поиск для удаления
if(place) del(place->next); //Удаление промежуточного
else del(list); //Удаление первого элемента
output(list); }
else printf("Элемент с таким ключом не найден!");

getch();


}

Вроде работает..... Если нет, могу другой бросить..........
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...