Смысл переменных в структурах данных
l ПОСЛЕДОВАТЕЛЬНОСТЬЮ называется упорядоченное множество переменных, количество которых может меняться. В идеальном случае последовательность может быть неограниченной, реально же в программе имеются те или иные ограничения на ее длину. Рассмотрим самый простой способ представления последовательности. Если переменные принимают целые положительные значения, то их последовательность может быть размещена в обычном массиве. Для того, чтобы определить текущее количество элементов последовательности можно поступить двумя способами :
-использовать дополнительную переменную - счетчик числа элементов ;
-добавлять каждый раз в качестве обозначения конца последовательности дополнительный элемент с особым значением - признак конца последовательности, например нулевой (ОГРАНИЧИТЕЛЬ ПОСЛЕДОВАТЕЛЬНОСТИ).
При таком представлении последовательности у обычного массива, в котором она хранится, возникает дополнительный " смысл" - он является кроме всего прочего - структурой данных, а именно - последовательностью. Но " смысл" этот реализуется в тех фрагментах алгоритма, которые работаю с этим массивом именно как с последовательностью, например :
// создать пустую последовательность
A[0]=0;
// найти конец последовательности
for(n=0; A[n]!=0; n++);
// добавить в конец последовательности
for(n=0; A[n]!=0; n++);
A[n]=c; A[n+1]=0;
// включить в последовательность под заданным номером n
for (i=0; A[i]!=0; i++);
for (; i>=n; i--) A[i+1]=A[i];
A[n]=c;
// удалить из последовательности под заданным номером n
for (i=0; A[i]!=0; i++);
if (n<=i) { for(; A[i]!=0; i++) A[i]=A[i+1]; }
Обычно программа, создающая последовательность в массиве может добавлять ограничивающий элемент в самом конце. При этом программа должна проверять размерность массива на предмет наличия в нем свободных элементов
int A[20]; int i=0;
while (i< 19; i++)
{ ... получить " c" ...
if (...нет очередного " с" ...) break;
A[i++]=c; // добавить " с" к последовательности
}
A[i]=0; // добавить ограничитель последовательности
В приведенном фрагменте ключевым является выражение A[i++]=c; (или A[i]=c; i++ ) . В нем переменная i имеет смысл - текущий элемент последовательности, а массив A[] - сама последовательность. Само выражение понимается как - добавить " с" в последовательность. В данном примере добавление очередного элемента связано с шагом цикла, в котором это добавление производится. Однако такое же действие - добавление в последовательность, может быть никоим образом не связано с текущей логикой программы, оно может производиться при любых условиях, когда в этом возникает необходимость
for (k=0; ...for(j=0 ...if...
if (...есть очередное " с" ...)
A[i++]=c; // добавить " с" к последовательности
A[i]=0; // добавить ограничитель последовательности