标签:25 Group cur SLinkedList source var new Nodes Next
SLinkedList<int> slist = new SLinkedList<int>();
slist.AppendRange(new[] { 1, 2, 3, 4, 5 });
Console.WriteLine("Input: " + slist.Print());
Console.WriteLine("k=2");
var rslt = slist.RotateRight(2);
Console.WriteLine(rslt.Print());
/// <summary>
/// 向右旋转链表 k 次
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source"></param>
/// <param name="k"></param>
/// <returns></returns>
public static SLinkedList<T> RotateRight<T>(this SLinkedList<T> source, int k) where T : IComparable<T>
{
if (source.Head == null || source.Head.Next == null || k == 0)
{
return source;
}
var len = source.Count;
if (k % len == 0)
{
return source;
}
var tmp = new SLinkedList<T>(source);
var head = tmp.Head;
var tmp2 = new SLinkedList<T>(head);
var newHead = tmp2.Head;
var cur = newHead;
while (cur.Next != null)
{
cur = cur.Next;
}
// 连接
cur.Next = head;
cur = newHead;
for (int i = len - k % len; i > 0; i--)
{
cur = cur.Next;
}
var res = new SLinkedList<T>();
for (int i = 0; i < len; i++)
{
res.Append(cur.Data);
cur = cur.Next;
}
return res;
}
标签:25,Group,cur,SLinkedList,source,var,new,Nodes,Next 来源: https://www.cnblogs.com/wesson2019-blog/p/15554680.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。