Официальный сайт студ.городка НГТУ
Программирование и БД » Списки. Реализация на Си. 

#1  21.03.07 17:07

Списки. Реализация на Си.

Односвязные \ двусвязные.
Функции инициализации, удаления, добавления элемента.

Есть у кого-нибудь? Лень писать. :)

Offline

#2  21.03.07 17:10

Re: Списки. Реализация на Си.

на с или на с++?
вообще это можно на классах или на структурах сделать. я делал когда-то, если найду, то скину на мыл

Offline

#3  21.03.07 17:11

Re: Списки. Реализация на Си.

Был бы мыл, я бы не спрашивал. В смысле интернета нет.

Именно на Си. Т.е. ООП отдыхает. Структуры.

Offline

#4  21.03.07 19:25

Re: Списки. Реализация на Си.

односвязный список:

Код: C:

struct elem
{
 int val;
 elem *next;
}

добавление:

Код: C:

void add(int v, elem *&head)
		{
		 elem *tmp=head,*t=new elem;
                 t->val=v;t->next=NULL;
		 if(head==NULL) { head=t;head->next=NULL;return; }
		 while(tmp->next!=NULL) tmp=tmp->next;
		 tmp->next=t;
		}

Исправлено kvazimodo (21.03.07 19:29)

Offline

#5  21.03.07 19:28

Re: Списки. Реализация на Си.

включение с сохранением порядка:

Код: C:

void insert(int v, elem *&head)
		{
		 elem *q ,*pr,*p;
		 q=new elem;
                 q->val=v;q->next=NULL;
		 for(p=head,pr=NULL; p!=NULL && obj>p->val; pr=p,p=p->next);
		 if(pr==NULL) { q->next=head; head=q; }
		 else { q->next=p;pr->next=q; }
		}

Offline

#6  21.03.07 19:32

Re: Списки. Реализация на Си.

включение на заданную позицию:

Код: C:

void insert(int v, int pos, elem *&head)
		{
		 elem *tmp,*pr,*el=NULL;
		 int i;
		 for(i=1,tmp=head;i<pos && tmp->next!=NULL;i++)
			{
			 pr=tmp;
			 tmp=tmp->next;
			}
		 if(tmp->next==NULL && i<pos)
			{
			 printf("No such position\n");
			 return;
			}
		 else
			{
			 el=new elem;el->val=v;el->next=NULL;
			 el->next=tmp;
			 pr->next=el;
			}
		}

Исправлено kvazimodo (21.03.07 19:35)

Offline

#7  21.03.07 19:34

Re: Списки. Реализация на Си.

удаление:

Код: C:

void del(int pos, elem *&head)
		{
		 elem *tmp,*pr;
		 tmp=head;
		 for(int i=1;i<pos;i++){ pr=tmp;tmp=tmp->next; }
		 pr->next=tmp->next;
		 delete tmp;
		}

Offline

#8  21.03.07 19:34

Re: Списки. Реализация на Си.

возможны кое-какие косяки %)

Offline

#9  22.03.07 18:40

Re: Списки. Реализация на Си.

А можете подсказать функцию удаления элемента если передавать не позицию, а само значение элемента?

Offline

#10  22.03.07 18:44

Re: Списки. Реализация на Си.

Дональдак, ну, наверное, примерно вот так:

Код: C:

void del(int v, elem *&head)
		{
		 elem *tmp,*pr;
		 for(tmp=head;tmp->val!=v; ){ pr=tmp;tmp=tmp->next; }
                 if(tmp==NULL){ pr->next=NULL;return; }
		 pr->next=tmp->next;
		 delete tmp;
		}

тока удалится(если удалится %)) первый с таким значением элемент...

Исправлено kvazimodo (22.03.07 18:50)

Offline

#11  22.03.07 18:46

Re: Списки. Реализация на Си.

Спасибо большое! Сейчас попробую!

Offline

#12  22.03.07 21:47

Re: Списки. Реализация на Си.

STL рулит :)))

Offline

#13  23.03.07 07:41

Re: Списки. Реализация на Си.

Karminsky написал(а):

Односвязные \ двусвязные.
Функции инициализации, удаления, добавления элемента.

Есть у кого-нибудь? Лень писать. :)

У меня есть 5 лаб и курсовая по спискам, надо будет пиши в приват, скину те куда-ть, либо выложу на ФТП и скачаешь...

Исправлено Rybak (23.03.07 07:43)

Offline

#14  26.03.07 19:27

Re: Списки. Реализация на Си.

Укроп написал(а):

Karminsky, ну теперь то ты понял что твои поделки на хостеле весят не более пары лаб..
будешь еще выпендриваться? ))))

Это не я бляяя...

Offline

#15  26.03.07 19:29

Re: Списки. Реализация на Си.

Укроп написал(а):

Karminsky, ну теперь то ты понял что твои поделки на хостеле весят не более пары лаб..
будешь еще выпендриваться? ))))

В смысле? После чего я это должен был понять?

Offline

#16  28.03.07 09:20

Re: Списки. Реализация на Си.

Укроп написал(а):

Дональдак написал(а):

Спасибо большое! Сейчас попробую!

 

Это не я бляяя...

Offline

Программирование и БД » Списки. Реализация на Си. 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.876 сек.
Выполнено 14 запросов.