图书整理(链表)

书店店员有一张链表形式的书单,每个节点代表一本书,节点中的值表示书的编号。为更方便整理书架,店员需要将书单倒过来排列,就可以从最后一本书开始整理,逐一将书放回到书架上。请倒序返回这个书单链表。

示例 1:

输入:head = [3,6,4,1]

输出:[1,4,6,3]

提示:

0 <= 链表长度 <= 10000

     using System;

    // 定义链表节点类

    public class ListNode

    {

    public int Val { get; set; }

    public ListNode Next { get; set; }

   

    public ListNode(int val)

    {

    Val = val;

    Next = null;

    }

    }

   

    // 定义链表类(可选)

    public class LinkedList

    {

    private ListNode head;

   

    public LinkedList()

    {

    head = null;

    }

   

    // 添加节点到链表末尾

    public void AddNode(int val)

    {

    ListNode newNode = new ListNode(val);

    if (head == null)

    {

    head = newNode;

    }

    else

    {

    ListNode current = head;

    while (current.Next != null)

    {

    current = current.Next;

    }

    current.Next = newNode;

    }

    }

//开始做翻转

    public class Solution {

    public int[] ReverseBookList(ListNode head) {

      ListNode current=new() ;//创建一个临时节点累替代头指针 不用头指针防止找不到头丢失链表地址

      current=head;

      int count=0;//计数器 记录链表长度给后面数组做参考

      while(current!=null)

      {

          current=current.next;

          count++;

      }//遍历链表获得长度

     int [] temp = new int[count];//做一个等长数组

     for(int i=count-1;i>=0;i--)

     {

         temp[i]=head.val;

         head=head.next;

     }//循环倒着存进数组 数组正着读取就是倒序了

     return temp;

    }

}

    // 打印链表(用于验证)

    public void PrintList()

    {

    ListNode current = head;

    while (current != null)

    {

    Console.Write(current.Val + " ");

    current = current.Next;

    }

    Console.WriteLine();

    }

    }

   

    class Program

    {

    static void Main(string[] args)

    {

    LinkedList linkedList = new LinkedList();

    string input;

    int value;

   

    do

    {

    Console.Write("请输入一个整数(输入'q'结束):");

    input = Console.ReadLine();

   

    if (int.TryParse(input, out value))

    {

    linkedList.AddNode(value);

    }

    else if (input.ToLower() == "q")

    {

    break;

    }

    else

    {

    Console.WriteLine("无效输入,请输入一个整数或'q'。");

    }

    } while (true);

   

    // 打印链表以验证

    linkedList.PrintList();

    }

    }

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务