Как удалить все вхождения конкретного символа в двойном связанном списке?

Это по соображениям безопасности по умолчанию невозможно. Сначала необходимо настроить Tomcat, чтобы включить ServletContext текущего webapp в другие веб-приложения. Это нужно сделать, установив атрибут crossContext в context.xml на true.


После этого вы можете использовать ServletContext#getContext() , чтобы получить другой контекст сервлета по его пути контекста и, наконец, использовать RequestDispatcher, как обычно ServletContext#getRequestDispatcher() .

Например

ServletContext otherContext = getServletContext().getContext("/otherContext");
otherContext.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);

1
задан Stefan Becker 26 February 2019 в 10:42
поделиться

1 ответ

На первый взгляд я вижу два вопроса:

  • , что должен означать for (copy1;? GCC выдает предупреждение statement with no effect.
  • первое if условие внутри цикла никогда не может быть TRUE, потому что оно противоположно условию цикла.

Если я правильно понимаю ваше описание, вы хотите

  • перебрать список
  • удалить любую запись, где info == value
  • печатать сообщение, когда value не было найдено в списке
  • возвращает (потенциально обновленный) заголовок списка

Вот как я бы написал эту функцию. Поскольку ваш вопрос не включал определение для struct list, я сделал обоснованное предположение:

struct list {
  char info;
  struct list* prev;
  struct list* next;
};

struct list* delete_char(struct list* the_list, char value) {
  struct list* entry = the_list;
  unsigned int count = 0;

  while (entry) {
    /* entry may be removed during this iteration */
    struct list* next = entry->next;

    if (entry->info == value) {
      struct list* prev = entry->prev;

      /* value found */
      count++;

      /* unchain entry from list */
      if (prev) {
        /* not removing first entry on the list */
        prev->next = next;
      } else {
        /* removing first entry on the list: new head of list */
        the_list = next;
      }
      if (next) {
        /* not removing last entry on the list */
        next->prev = prev;
      }

      /* delete entry */
      free(entry);
      /* NOTE: entry is now invalid! */
    }

    entry = next;
  }

  if (!count) {
    printf("The element is not in the list!\n");
  }

  return the_list;
}
0
ответ дан Stefan Becker 26 February 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: