Линейная таблица
Линейные таблицы являются самыми простыми и наиболее часто используемыми структурами данных. Это конечные последовательности, состоящие из n отдельных элементов данных (узлов). Среди них число n элементов данных - длина таблицы. Когда n равен нулю, он становится пустой столом. Непустовая линейная таблица обычно записывается как:
(A1, A2,…, AI-1, AI, AI+1,…, AN)
1. Последовательное хранение и алгоритм линейных таблиц
Последовательное хранение линейной таблицы относится к хранению элементов данных линейной таблицы в набор единиц непрерывного хранения с адресами в их логическом порядке. Линейная таблица, хранящаяся таким образом, называется последовательной таблицей.
1. Структурное определение таблицы заказа
открытый класс seqlist { / * Начальное пространство составляет 10 * / private static final int list_size = 10; /* Данные массива используются для хранения элементов*/ private int [] data; /* Текущая таблица длинная, фактическое количество хранимых элементов*/ private int длина; } 2. Вставьте операцию
Операция вставки последовательной таблицы относится к вставке нового элемента между элементом I-1 и элементом I-TH линейной таблицы. Поскольку соседние элементы таблицы последовательности также примыкают к физической структуре, их физические отношения хранения также должны подвергаться соответствующим изменениям. Если I = N+1, все элементы, начинающиеся из элемента I-TH исходной таблицы заказов, должны перемещаться назад на 1 позицию соответственно.
/** * Вставьте новый элемент перед позицией I-TH в список списка таблицы заказа * Таблица списка списка @param * @param i вставьте положение * @param Узел Новый элемент */public void insertlist (seqlist, int i, int node) {if (i <1 || i> list.length + 1) {System.out.println ("ошибка положения"); возвращаться; } if (list.length> = list_size) {System.out.println ("overflow"); возвращаться; } for (int j = list.length - 1; j> = i - 1; j -) { / * Начните с последнего элемента и переместите один за другим * / list.data [j+1] = list.data [j]; } /* Вставить новый элемент* / list.data [i-1] = node; / * Добавить 1 в длину таблицы */ list.length ++; } 3. Удалить операцию
Операция удаления последовательной таблицы относится к удалению элемента I-TH в таблице. В отличие от операции вставки, вставка перемещает элемент назад, а операция удаления перемещает элемент вперед.
/*** Удалить элемент i-th в списке таблицы заказа и вернуть удаленный элемент* @param seceplose Table* @param I Позиция элемента* @return Node*/public int deletelist (список seqlist, int i) {int node = 0; if (i <0 || i> list.length) {System.out.println ("Ошибка позиции"); вернуть узел; } node = list.data [i-1]; for (int j = i; j <list.length; j ++) { /* element вперед* / list.data [j-1] = list.data [j]; } list.length -; вернуть узел;} 4. Таблица обратных заказов
Во -первых, используйте половину длины таблицы в качестве контроля цикла количества раз, обменяйте последний элемент в таблице в порядке первого элемента, обменяйте второй последний элемент в порядке второго элемента и так далее, пока обмен не будет завершен.
/*** Таблица последовательностей обратно* @param Список исходной таблицы заказа* @return Table Pequence After Afverse*/public SeqList Converts (Seqlist List) {int node; int length = list.length/2; for (int i = 0; i <length; i ++) { /* Симметричные обменные элементы* / int j = list.length - 1 - i; node = list.data [i]; list.data [i] = list.data [j]; list.data [j] = node; } return List; } 2. Цепочка хранения и алгоритм линейных таблиц
Пространство хранения элементов данных структуры цепочки хранилища, которая хранит линейные таблицы, может быть непрерывным или прерывистым, поэтому узлы связанного списка нельзя получить случайным образом. Хранение цепи является одним из наиболее распространенных методов хранения.
При использовании структуры хранения цепочки для представления каждого элемента данных, в дополнение к хранению информации самого элемента, также необходим адрес, который указывает место хранения последующих элементов. Линейная таблица, представленная этим методом хранения, называется связанным списком.
5. Структурное определение отдельного списка связи
открытый класс Linklist { /* Поле данных* / Private Char Data; /* Последовательный элемент*/ private Linklist Далее;} 6. Алгоритм здания стола
Метод вставки заголовка начинается с пустой таблицы, многократно считывает данные, генерирует новый узел, сохраняет данные чтения в поле данных нового узла, а затем вставляет новый узел в заголовке текущего связующего списка, пока он не закончится.
/*** Создать таблицу от вставки заголовка* @param chars charms array* @return одинокий Linked List*/public linklist createListf (char [] chars) {linklist node; Linklist Head = null; для (char ch: chars) { /* Подать заявку на новый узел* / node = new Linklist (); node.data = ch; /* Укажите на узел преемника*/ node.next = head; Head = node; } /* Вернуться к узлу головного узла* / return Head;} 7. Алгоритм построения таблицы вставки хвостовой вставки
Порядок узлов в таблице вставки заголовка является противоположностью порядка при вводе. Если порядок ввода является согласованным, можно использовать метод вставки хвоста.
/*** Метод вставки хвостовой вставки для создания таблицы* @param chars символ массивы* @return одинокий Linked List*/public linklist createListr (char [] chars) {linklist node; Linklist Head = null; Linklist upt = null; для (char ch: chars) {node = new Linklist (); node.data = ch; if (head == null) { /* Новый узел - это узлом головного узла* / head = node; } else { /* Предыдущий узел указывает на новый узел* / bure.next = node; } /* Хвост таблицы указывает на новый узел* / buld = node; } /* Вернуться к узлу головного узла* / return Head;}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.