|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.03.2008, 21:00 | #1 |
Пользователь
Регистрация: 25.02.2008
Сообщений: 17
|
Задача на линейные списки
Ребят может у кого есть решение этой задачи?
Написать программу с помощью линейного списка: Многочлен P(x)=anxn + an-1xn-1 +...+ a1x + a0 с целыми коэффициентами можно представить в виде списка, причем если ai=0, то соответствующее звено не включать в список. Определить функцию, вычисляющую значения многочлена в точке x |
02.03.2008, 22:10 | #2 |
Форумчанин
Регистрация: 08.07.2007
Сообщений: 154
|
можеш нормальней написать. у тя тут ошибка и не конкретности есть.
|
03.03.2008, 08:51 | #3 |
Пользователь
Регистрация: 25.02.2008
Сообщений: 17
|
Реализовать структуры данных «линейный список»
Многочлен P(x)=anxn + an-1xn-1 +...+ a1x + a0 с целыми коэффициентами можно представить в виде списка, причем если ai=0, то соответствующее звено не включать в список. Определить функцию, вычисляющую значения многочлена в точке x. P.S.: n,n-1,1,0 - нижниие индексы |
03.03.2008, 09:30 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
наверное не везде. Это все-таки многочлен - x^(n)
ход решения Для коэффициентов задаем массив заведомо больше N var A : array [0..100] of integer; запрашиваем N. Или с клавиатуры или читаем из файла. Аналогично запрашиваем коэффициенты a[i] Функция, вычисляющая многочлен: Код:
|
05.03.2008, 00:07 | #5 |
Пользователь
Регистрация: 25.02.2008
Сообщений: 17
|
Как реализовать линейный список для этой задачи?
|
05.03.2008, 08:22 | #6 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
|
16.03.2008, 22:19 | #7 |
Пользователь
Регистрация: 25.02.2008
Сообщений: 17
|
Просто реализовать нужно с использыванием линейного списка
И с выделением динамической памяти, с указателями |
16.03.2008, 22:25 | #8 |
Пользователь
Регистрация: 25.02.2008
Сообщений: 17
|
С помощью вот этих функций нужно реализовать написанную выше задачу, только нужно это как то связать с поставленоой задачей. Ворос как?
type PElement = ^TypeElement; {указатель на тип элемента} TypeElement = record {тип элемента списка} Data: TypeData; {поле данных элемента} Next: PElement; {поле указателя на следующий элемент} end; var ptrHead: PElement; {указатель на первый элемент списка} ptrCurrent: PElement; {указатель на текущий элемент} Для добавления элемента в конец списка используется процедура вставки последующего элемента для случая, когда текущий элемент является последним в списке. procedure Ins_LineSingleList(DataElem: TypeData; var ptrHead, ptrCurrent: PElement); {Вставка непервого элемента в линейный однонаправленный список} {справа от элемента, на который указывает ptrCurrent} var ptrAddition: PElement; {вспомогательный указатель} begin New(ptrAddition); ptrAddition^.Data := DataElem; if ptrHead = nil then begin {список пуст} {создаем первый элемент списка} ptrAddition^.Next := nil; ptrHead := ptrAddition; end else begin {список не пуст} {вставляем элемент списка справа от элемента,} {на который указывает ptrCurrent} ptrAddition^.Next := ptrCurrent^.Next; ptrCurrent^.Next := ptrAddition; end; ptrCurrent := ptrAddition; end; procedure InsFirst_LineSingleList(DataElem: TypeData; var ptrHead: PElement); {Вставка первого элемента в линейный однонаправленный список} var ptrAddition: PElement; {вспомогательный указатель} begin New(ptrAddition); ptrAddition^.Data := DataElem; if ptrHead = nil then begin {список пуст} {создаем первый элемент списка} ptrAddition^.Next := nil; end else begin {список не пуст} {вставляем новый элемент слева (перед) первым элементом} ptrAddition^.Next := ptrHead; end; ptrHead := ptrAddition; end; Операция просмотра списка заключается в последовательном просмотре всех элементов списка. procedure Scan_LineSingleList(ptrHead: PElement); {Просмотр линейного однонаправленного списка} var ptrAddition: PElement; {вспомогательный указатель} begin ptrAddition := ptrHead; while ptrAddition <> nil do begin {пока не конец списка} writeln(ptrAddition^.Data); {Вывод значения элемента} ptrAddition := ptrAddition^.Next; end; end; Функция поиска элементов в списке function Find_LineSingleList(DataElem: TypeData; var ptrHead, ptrCurrent: PElement): boolean; {Поиск элемента в линейном однонаправленном списке} var ptrAddition:PElement; {Дополнительный указатель} begin if (ptrHead <> nil)then begin {Если существует список} ptrAddition := ptrHead; while (ptrAddition <> nil) and (ptrAddition^.Data <> DataElem) do {пока не конец списка и не найден элемент} ptrAddition := ptrAddition^.Next; {Если элемент найден, то результатом работы функции является - true} if ptrAddition <> nil then begin Find_LineSingleList := true; ptrCurrent := ptrAddition; end else begin Find_LineSingleList := false; end; end else begin Find_LineSingleList:=false; end; end; |
06.05.2011, 20:22 | #9 |
Новичок
Джуниор
Регистрация: 06.05.2011
Сообщений: 1
|
как определить, верно ли, что каждое число содержится в линейном списке только один раз.....
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Односвязные линейные списки !!! | salia | Помощь студентам | 1 | 12.10.2009 16:01 |
Списки | Вилен | Общие вопросы C/C++ | 3 | 22.05.2008 00:40 |
списки | Влдислаав3911 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 10.05.2008 17:35 |
Задача: списки/сортировка | uranus | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 22.05.2007 14:34 |