Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sortable linked list of objects
- class ListOfMessages
- {
- private int m_nSize;
- public Message m_cListStart;
- //public Message m_cNextItem;
- public Message m_cLastItem;
- public ListOfMessages()
- {
- m_nSize = 0;
- m_cListStart = null;
- //m_cNextItem = null;
- }
- public int Count
- {
- get { return m_nSize; }
- }
- public string Display(Message cMessage)
- {
- return "Message: " + cMessage.m_strMessage + "nPriority: " + cMessage.m_strPriority;
- }
- //list additions
- public int Add(Message newMessage)
- {
- Message nextMessage = new Message();
- //inserts objects at the end of the list
- if (m_nSize == 0)
- {
- m_cListStart = newMessage;
- //m_cLastItem = newMessage;
- }
- else
- {
- Message CurrentMessage = m_cListStart;
- if (newMessage.m_strPriority == "High")
- {
- if (m_cListStart.m_strPriority != "High")
- {
- //Make the object at the start of the list point to itself
- CurrentMessage.m_cNext = m_cListStart;
- //Replace the object at the start of the list with the new message
- m_cListStart = newMessage;
- }
- else
- {
- Message LastMessage = null;
- for (int iii = 0; iii < m_nSize; iii++)//(newmessage.m_strpriority == iii.m_strpriority)
- //&& (iii.m_cnext == null);)
- {
- if (m_cListStart.m_strPriority != "High")
- {
- nextMessage = newMessage;
- nextMessage.m_cNext =
- CurrentMessage = nextMessage;
- //LastMessage.m_cNext = CurrentMessage;
- }
- LastMessage = CurrentMessage;
- if (m_cListStart.m_cNext != null)
- m_cListStart = m_cListStart.m_cNext;
- }
- }
- //iii = iii.m_cnext;
- }
- // for (int iii = m_cListStart; ; iii = iii.m_cNext)//(newMessage.m_strPriority == iii.m_strPriority)
- // //&& (iii.m_cNext == null);)
- //{
- // //Message lastMessage = iii;
- // if (iii.m_strPriority != iii.m_strPriority)
- // {
- // //iii.m_cNext = newMessage;
- // newMessage.m_cNext = iii.m_cNext;
- // iii.m_cNext = newMessage;
- // }
- //m_cLastItem.m_cNext = newMessage;
- }
- //m_cLastItem = newMessage;
- return m_nSize++;
- }
- public Message Pop()
- {
- //Message Current = m_cListStart;
- //if the object at the start of the list has another object after it, make that object the start of the list
- //and decrease the size by 1 after popping an object off if there is more than 1 object after the start of the list
- if (m_cListStart.m_cNext != null)
- {
- m_cListStart = m_cListStart.m_cNext;
- }
- if (m_nSize > 0)
- m_nSize--;
- else
- m_cListStart = null;
- return m_cListStart;
- //if (m_cListStart.m_cNext != null)
- // m_cListStart = m_cListStart.m_cNext;
- //if (m_nSize > 1)
- // m_nSize--;
- //return m_cListStart;
- }
- class Node<T> : IComparable<T>
- {
- public int Priority {set;get;}
- public T Data {set;get;}
- public Node<T> Next {set;get;}
- public Node<T> Previous {set;get;}
- // you need to implement IComparable here for sorting.
- }
- class LinkedList<T> : IEnumerable<T> where T: IComparable
- {
- public Node<T> Head {set;get;}
- public Node<T> Tail {set;get;}
- // set of constructors
- //.....
- public void Insert(Node<T> node)
- {
- // you can do recursive or iterative impl. very easy.
- }
- // other public methods such as remove, insertAfter, insert before, insert last etc.
- public void Sort()
- {
- // easiest solution is to use insertion sort based on priority.
- }
- }
Add Comment
Please, Sign In to add comment