Он примитивен. А в оригинальной C – The Complete Reference еще и наделал много ошибок, может конечно с переизданиями и переводами что-то изменилось, но я сомневаюсь)
>> то бишь реализация оных структур данных не является строгим стандартом ?
дело вкуса. большинство пользуется стандартными библиотеками. для си++, например, standart template library (stl) содержит реализации наиболее популярных структур данных в виде шаблонных классов.
меня интересует например такой момент.
Почему инициализацию массива требуется производить n+1 количеством элементов ?..это по Шилдту
почему у того же самого Шилдта к примеру при работе с Си не задействуется нулевой элемент массива ?
стек и очередь это некоторый механизм подразумевающий возможность
- добавлять туда данные
- изымать их
-проверка на то что очередь или стек пусты.
очередь продарумевает что привзятии данных из очереди ты возьмёшь первое что туда клали, а в стеке последнее.
сравнить можно со стопкой карт, когда кладёшь кладёшь наверх, когда берёшь в случае очереди всегда снизу, в случае стека всегда сверху.
очередь и стек можно реализовать многими способами, на практике часто делают на базе массива. в инстутите обычно изучают когда проходят списки однонаправленные или двухнаправленные с динамическими указателями, (списки тоже часто на практике держат в массивах)
27 сентября 2009 в 23:03
Он примитивен. А в оригинальной C – The Complete Reference еще и наделал много ошибок, может конечно с переизданиями и переводами что-то изменилось, но я сомневаюсь)
27 сентября 2009 в 22:05
у него хорошо описан язык, в качестве справочника по синтаксису – самое то.
27 сентября 2009 в 22:01
кстати, чем не нравится Шилдт ?
на мой,любительский,взгляд пишит вполне доходчего
27 сентября 2009 в 22:00
>> то бишь реализация оных структур данных не является строгим стандартом ?
дело вкуса. большинство пользуется стандартными библиотеками. для си++, например, standart template library (stl) содержит реализации наиболее популярных структур данных в виде шаблонных классов.
27 сентября 2009 в 21:05
то бишь реализация оных структур данных не является строгим стандартом ?
И главная цель лишь этих самых структур функционирование ?
27 сентября 2009 в 21:05
Да, разумеется. Вообще, как уже упоминали, иногда их реализуют на связных списках, то есть вообще без использования массивов.
27 сентября 2009 в 18:02
элемент 0 используется, но не для хранения, а для обеспечения наглядности кода:
if(p1 == tos) {
printf("Стек пуст.\n");
exit(1);
}
вообще же можно было вместо
p1–;
return *(p1+1);
написать
return *p1–;
но это не сделано в тех же целях – ради наглядности.
27 сентября 2009 в 16:03
Дейсвительно… Ну видимо автору так захотелось). А вообще меньше читайте Шилдта) Особенно Полный справочник по С
27 сентября 2009 в 13:05
Леонид
из полного справочника по С
#include <stdio.h>
#include <stdlib.h>
#define SIZE 50
void push(int i);
int pop(void);
int*tos, *p1, stack[SIZE];
int main(void)
{
int value;
tos = stack; /* tos ссылается на основание стека */
p1 = stack; /* инициализация p1 */
do {
printf("Введите значение: ");
scanf("%d", &value);
if(value != 0) push(value);
else printf("значение на вершине равно %d\n", pop());
} while(value != -1);
return 0;
}
void push(int i)
{
p1++;
if(p1 == (tos+SIZE)) {
printf("Переполнение стека.\n");
exit(1);
}
*p1 = i;
}
int pop(void)
{
if(p1 == tos) {
printf("Стек пуст.\n");
exit(1);
}
p1–;
return *(p1+1);
}
указатель вначале инкрементируется, а лишь затем но нему записываются значение.
то бишь выходит, что элемент массива stack[0] не задействуется
27 сентября 2009 в 13:04
хотя можно ограничиться просто предусловиями и постусловиями проводимых над стеком операций…
27 сентября 2009 в 13:03
имхо понятие стека и очереди определяют интерфейс, предусловия и постусловия методов, а не реализацию.
нет?
27 сентября 2009 в 12:05
меня интересует например такой момент.
Почему инициализацию массива требуется производить n+1 количеством элементов ?..это по Шилдту
почему у того же самого Шилдта к примеру при работе с Си не задействуется нулевой элемент массива ?
27 сентября 2009 в 12:05
вы хотя бы книжку назовите. а лучше приведите отрывок, который не понятен. может, вы невнимательно читаете?
27 сентября 2009 в 12:04
стек и очередь это некоторый механизм подразумевающий возможность
- добавлять туда данные
- изымать их
-проверка на то что очередь или стек пусты.
очередь продарумевает что привзятии данных из очереди ты возьмёшь первое что туда клали, а в стеке последнее.
сравнить можно со стопкой карт, когда кладёшь кладёшь наверх, когда берёшь в случае очереди всегда снизу, в случае стека всегда сверху.
очередь и стек можно реализовать многими способами, на практике часто делают на базе массива. в инстутите обычно изучают когда проходят списки однонаправленные или двухнаправленные с динамическими указателями, (списки тоже часто на практике держат в массивах)
27 сентября 2009 в 12:02
А. Ахо, Дж. Хопкрофт, Д. Ульман. Структуры Данных и Алгоритмы.