Как реализовать приоритетную очередь, используя Sorted Linked List? - PullRequest
0 голосов
/ 23 октября 2011

Я хочу реализовать это в c #, у меня есть готовый класс связанного списка, но проблема возникает, когда я сортирую класс с помощью этого метода Sort. Как я могу отдавать приоритет элементам, чтобы элемент с наивысшим приоритетом удалялся из очереди первым.

        public void Sort()
   {
       ListNode current=first;
       int temp;

       for (int i = 0; i < counter; i++)
       {
           while (current.Next != null)
           {

               if (current.Data > current.Next.Data)
               {
                   temp = current.Data;
                   current.Data = current.Next.Data;
                   current.Next.Data = current.Data;
               }
               current = current.Next;
           }
       }
   }

Ответы [ 2 ]

2 голосов
/ 23 октября 2011

Чтобы немного проанализировать ваш код:

Это похоже на 1 ход пузырьковой сортировки, так что не ожидайте, что она все отсортирует.

Это только гарантирует, что наибольшее значение *1005* станет элементом last . И только после того, как вы исправите часть подкачки:

if (current.Data > current.Next.Data)
{
  temp = current.Data;
  current.Data = current.Next.Data;
  current.Next.Data = temp;
}
0 голосов
/ 23 октября 2011

Я не думаю, что вам нужно сортировать список подобным образом, просто создайте процедуру вставки, которая вставит любые новые элементы в нужное место, и ваш список всегда будет отсортирован.

Ргдс ГДж

...