|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.12.2009, 16:19 | #1 | |
Пользователь
Регистрация: 23.10.2009
Сообщений: 33
|
линейный односвязный список на С - что это?? о_О
Люди, помогите разобраться со связными структурами данных, а именно с линейным односвязным списком.
Очень-очень нужно написать программку по этой теме. Вот задание: Цитата:
keep it simple
|
|
16.12.2009, 23:00 | #2 |
Пользователь
Регистрация: 23.10.2009
Сообщений: 33
|
Код:
Помогите, плиз))
keep it simple
|
16.12.2009, 23:01 | #3 |
Пользователь
Регистрация: 23.10.2009
Сообщений: 33
|
Код:
Помогите, плиз))
keep it simple
|
17.12.2009, 03:38 | #4 |
Пользователь
Регистрация: 23.10.2009
Сообщений: 33
|
Код:
но компилятор почему-то не хочет с этим работать !! что делать?? подскажите в чем ошибка?? где и как надо исправить?? сдавать лабу нужно в эту пятницу !!
keep it simple
|
17.12.2009, 08:01 | #5 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
Код:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
17.12.2009, 13:15 | #6 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
2aka_Kiss, этот вариант никуда не годится, очень много ошибок, загадочная переменная Head, которая нигде не объявлена и т.д. Сама суть верна, но реализация заставляет желать лучшего ) |
|
21.12.2009, 01:54 | #7 |
Пользователь
Регистрация: 23.10.2009
Сообщений: 33
|
Так помогите же исправить ошибки !!
Хоть натолкните на них, а лучше ткните пальчиком на то, что нужно исправить и главное КАК !! Ведь смысл сайта в взаимопомощи)) Так помогите нуждающейся, может я чему-то и научусь))
keep it simple
|
22.12.2009, 00:49 | #8 |
Пользователь
Регистрация: 23.10.2009
Сообщений: 33
|
Человечки, ну помогите добить эту программку, ну пожалуйста !!
Вот это работает, но без классов: [CPP]#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct _node { int value; struct _node * next; }Node,List; void CreateList(List * list) { list->next=NULL; }; void AddNode(List * list,int value) { Node * node; if(list->next==NULL) { list->next = (Node*) malloc(sizeof( List)); list->next->value=value; list->next->next=NULL; return; }; if(list->next->value >= value) { node = (Node*)malloc(sizeof( List)); node->value = value; node->next = list->next; list->next = node; } else AddNode(list->next,value); }; int DelNode(List * list,int value) { Node * tmp; if(list->next==NULL) return 0; if(list->next->value==value) { tmp = list->next->next; free(list->next); list->next = tmp; return 1; } else return DelNode(list->next,value); }; void PrintList(List * list) { Node * tmp; if(list->next == NULL) { printf("List is empty"); return; } tmp = list->next; while(tmp !=NULL) { printf("%d ",tmp->value); tmp=tmp->next; }; }; int OccList(List * list,int value ) { if(list->next == NULL) return 0; if(list->next->value == value) return 1+OccList(list->next,value); if(list->next->value >value ) return 0; return OccList(list->next,value); }; int main () { char command[4]; int param1,param2,tmp; List list; CreateList(&list); while(1) { printf("Enter command : "); scanf("%s",command); if(!strcmp(command,"pri") ) { PrintList(&list); printf("\n"); }; if(!strcmp(command,"ins") ) { scanf("%d",¶m1); AddNode(&list,param1); }; if(!strcmp(command,"del") ) { scanf("%d",¶m1); if(!DelNode(&list,param1)) printf("There is no given value in the list\n"); }; if(!strcmp(command,"occ") ) { scanf("%d",¶m1); printf("There are %d entries of %d in list\n",OccList(&list,param1),param 1); }; if(!strcmp(command,"end") ) break; }; return 0; };[/CPP] А вот я попыталась засунуть все это в классы с конструктором и деструктором, но что-то не то, там столько ошибок !! [CPP]#include <stdio.h> #include <string.h> #include <stdlib.h> class Spisok { public: typedef struct _node { int value; struct _node * next; } Node,List; Spisok(); ~Spisok(); void AddNode(); int DelNode(); void PrintList(); int OccList(); }; Spisok::Spisok(List *list) { list = new (_node); list->next=NULL; } Spisok::~Spisok() { delete []list; } //Добавление //элемента однонаправленного линейного списка void Spisok::AddNode(List * list,int value) { Node * node; if(list->next==NULL) { list->next = (Node*) malloc(sizeof( List)); list->next->value=value; list->next->next=NULL; return; }; if(list->next->value >= value) { node = (Node*)malloc(sizeof( List)); node->value = value; node->next = list->next; list->next = node; } else AddNode(list->next,value); } //Удаление //элемента однонаправленного линейного списка int Spisok::DelNode(List * list,int value) { Node * tmp; if(list->next==NULL) return 0; if(list->next->value==value) { tmp = list->next->next; free(list->next); list->next = tmp; return 1; } else return DelNode(list->next,value); } //Печать //элементов однонаправленного линейного списка void Spisok::PrintList(List * list) { Node * tmp; if(list->next == NULL) { printf("List is empty"); return; } tmp = list->next; while(tmp !=NULL) { printf("%d ",tmp->value); tmp=tmp->next; } } //Проверка на наличие //элемента однонаправленного линейного списка int Spisok::OccList(List * list,int value ) { if(list->next == NULL) return 0; if(list->next->value == value) return 1+OccList(list->next,value); if(list->next->value >value ) return 0; return OccList(list->next,value); } //главная программа int main () { //List list; Spisok A(list); char command[4]; int param1,param2,tmp; List list; CreateList(&list); while(1) { printf("Enter command : "); scanf("%s",command); if(!strcmp(command,"pri") ) { A.PrintList(&list); printf("\n"); } if(!strcmp(command,"ins") ) { scanf("%d",¶m1); A.AddNode(&list,param1); } if(!strcmp(command,"del") ) { scanf("%d",¶m1); if(!A.DelNode(&list,param1)) printf("There is no given value in the list\n"); } if(!strcmp(command,"occ") ) { scanf("%d",¶m1); printf("There are %d entries of %d in list\n",A.OccList(&list,param1),par am1); } if(!strcmp(command,"end") ) break; } return 0; }[/CPP] Что там еще доделать и как!! Я сейчас просто с ума сойду с этим кодом!! Очень жду помощи))
keep it simple
|
22.12.2009, 01:39 | #9 |
Пользователь
Регистрация: 23.10.2009
Сообщений: 33
|
Ура !!!
Я его домучала !! Программка заработала !! Вот она: Код:
то компилятор выбивает и он исчезает !! Что это такое?? Да и когда список пуст и я набираю при, т.е. печать, то печатается всякая фигня, весь мусор, который был, но его же не должно быть?? Как это исправить хоть скажите !!
keep it simple
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++. Односвязный список. Уничтожить список | Olya90 | Помощь студентам | 2 | 10.06.2009 18:52 |
Односвязный список. Что то сним не так | Djaconda | Общие вопросы C/C++ | 5 | 01.03.2009 15:46 |
Линейный односвязный список | Absinth | Помощь студентам | 4 | 11.11.2008 20:29 |
Помогите пож-та.Паскаль. Линейный односвязный список (ЛОС) | tonich | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 25.02.2008 21:55 |