使用链接列表实现队列 - 它创建链接列表但在打印后停止工作

时间:2014-10-14 02:03:43

标签: c# list linked-list

这是我到目前为止所拥有的。我已经生成了一个链接列表,但是当程序打印出链接列表时,会弹出一个弹出窗口,表示我的程序已停止工作。我正在使用visual studio。我需要使用链表实现队列。我能够创建并打印出来,但是当它打印出来时,程序就会停止。我已经尝试了一切,但我似乎无法让这个错误消失。当我尝试在链表类中使用其他方法但我没有包含这些方法时,也会发生这种情况。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; 

namespace CSCI3230_Project2_Zack_Davidson
{

    class Program
   {

      static void Main(string[] args)
      {

            int count = 0;
            LinkedList list = new LinkedList();
            for (int i = 1; i <= 20; i++)
            {
                list.Add(new Node(i));
                count++;
            }
            Console.WriteLine("I have generated a queue with 20 elements. I have printed the       queue below.");
           list.PrintNodes();

       }
    }

    public class Node
    {

        public Node next;
        public int data;
        public Node(int val)
        {
            data = val;
            next = null;
        }
    }

    public class LinkedList
    {
       public  TimeSpan runTimer;
       public System.Diagnostics.Stopwatch
       stopwatch = new System.Diagnostics.Stopwatch();

       Node front;
       Node current;

        public void Add(Node n)
        {
            if (front == null)
            {
                front = n;
                current = front; 
            }     
            else
            {
                current.next = n;
                current = current.next; 
            }

        }

        public void PrintNodes()
        {
            Node print = front;
            while (front != null)
            {
                 Console.WriteLine(print.data);
                 print = print.next;
            }

            /*while (front != null)
            {
                Console.WriteLine(front.data);
                front = front.next;
            }*/
         }
 }//EndofNameSpace

1 个答案:

答案 0 :(得分:4)

你的程序在这里遇到了无限循环:

Node print = front;
while (front != null)
{
    Console.WriteLine(print.data);
    print = print.next;
}

前面永远不会是空的。 你应该打印!= null。