帮忙C#写个链表顺序插入跳跃式的算法,在控制台可以输入跳跃的长度 如果跳跃跳出了接线保存起跳点再从起跳点以输入长度的1/2的长度跳跃,如果再跳过头,就一个一个的跳,下面给出了普通的插入排序法,最好再能写个二分算法的 谢啦 class MyLinkList
{
private int data;
public int Data
{
get { return this.data; }
set { this.data = value; }
}
private MyLinkList next;
public MyLinkList Next
{
get { return this.next; }
set { this.next = value; }
} public MyLinkList()
{
this.Data = 0;
this.Next = null;
}
public void sort(MyLinkList head, int data)//依次循环插入排序
{
MyLinkList list = head;
bool flag = true;
while (true){
MyLinkList list1 = head.Next;
MyLinkList front = head;
if (list1 == null){
MyLinkList node = new MyLinkList();
node.Data = data;
node.Next = list1;
head.Next = node;
break;
}
if (list.Next == null)
break;
else{
if (list.Data < data){
front = list;
list = list.Next;
}if(list.data>data){
MyLinkList node2 = new MyLinkList();
node2.Data = data;
node2.Next = list;
front.Next = node2;
flag = false;
break;
}
}
}if(flag==true){
MyLinkList node3 = new MyLinkList();
node3.Data = data;
list.Next = node3;
}
}
}
{
private int data;
public int Data
{
get { return this.data; }
set { this.data = value; }
}
private MyLinkList next;
public MyLinkList Next
{
get { return this.next; }
set { this.next = value; }
} public MyLinkList()
{
this.Data = 0;
this.Next = null;
}
public void sort(MyLinkList head, int data)//依次循环插入排序
{
MyLinkList list = head;
bool flag = true;
while (true){
MyLinkList list1 = head.Next;
MyLinkList front = head;
if (list1 == null){
MyLinkList node = new MyLinkList();
node.Data = data;
node.Next = list1;
head.Next = node;
break;
}
if (list.Next == null)
break;
else{
if (list.Data < data){
front = list;
list = list.Next;
}if(list.data>data){
MyLinkList node2 = new MyLinkList();
node2.Data = data;
node2.Next = list;
front.Next = node2;
flag = false;
break;
}
}
}if(flag==true){
MyLinkList node3 = new MyLinkList();
node3.Data = data;
list.Next = node3;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货