Модуль для реализации списка целых чисел с текущим элементом - 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 б), г) */
  }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы