Модуль для реализации списка целых чисел с текущим элементом - C#
Формулировка задачи:
Описать модуль для реализации списка целых чисел с текущим элементом . Предусмотреть выполнение действий над списком :
1 ) Начать работу .
2 ) пуст остаток списке?
3 ) Встать к началу списка .
4 ) Перейти к следующему элементу .
5 ) Текущий элемент .
6 ) Вставить элемент .
7 ) Удалить элемент .
Используя этот модуль , составить подпрограммы : присвоение для списков Let (L1 , L2 ) и вычисления длины списка Len ( L ) ;
Помогите пожалуйста, разобраться. Что представляет собой модуль? Как решать эту задачу? С чего вообще начинать?) Помогите, хоть алгоритм понять.
Решение задачи: «Модуль для реализации списка целых чисел с текущим элементом»
textual
Листинг программы
Модуль роботи із списком з поточним елементом у Сі складається з 2 файлів: listcur.h та listcur.c. /* listcur.h */ typedef struct lelem *lref; /* Вказівник на елемент списку */ struct lelem { /* Елемент списку */ int d; lref next; }; typedef struct { /* Список */ lref beg, cur; } list; extern void init(list *pl); /* Почати роботу */ extern int emp_end(list l); /* Чи порожній залишок списку?*/ extern void first(list *pl); /* Встати до початку списку */ extern void next(list *pl); /* Перейти до наступного елемента */ extern int current(list l); /* Поточний елемент */ extern void insert(list *pl, int n);/* Вставити елемент */ extern void delete(list *pl); /* Видалити елемент */ /* listcur.c */ #include <stdio.h> #include <stdlib.h> #include "listcur.h" lref find_prev(list l) { lref p; if (l.beg == l.cur) p=NULL; else { p = l.beg; while (p -> next != l.cur) p = p ->next; } return p; } ................. void insert(list *pl, int n) { lref p; p = (lref) malloc(sizeof(struct lelem)); p -> d = n; p -> next = pl -> cur; /* Рис. 10.21 а), в) */ if(pl -> beg == pl -> cur) pl -> beg = p; /* Рис. 10.21 б) */ else find_prev(*pl) -> next = p; /* Рис. 10.21 г) */ } void delete(list *pl) { lref p; if(pl -> cur == NULL) { printf("delete: список порожній\n"); exit(1); } p = pl -> cur; if(pl -> beg == p) pl -> beg = pl -> cur -> next; /* Рис. 10.22 а) */ else find_prev(*pl) -> next = pl -> cur -> next; /* Рис. 10.22 в) */ pl -> cur = pl -> cur -> next; free(p); /* Рис. 10.22 б), г) */ }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д