linknode* getpartition(linknode* head)
linknode* go = head->next;
linknode* small = nullptr;
linknode* equal = nullptr;
linknode* big = nullptr;
//第一次遍歷,我們要找到第乙個 與最後乙個小的、和最後乙個相等的,比最後乙個大的
//注意空值得邊界
while(go!=nullptr)else if(equal==nullptr && go->value == tail->value)else if(big ==nullptr && go->value > tail->value)
} go = go->next;
} linknode* small_go = small;
linknode* equal_go = equal;
linknode* big_go = big;
go = head->next;
//遍歷鍊錶,在鍊錶中,除了上面找到的三個節點(可能沒有三個),其他比目標小的串在small鍊錶中,
//與目標相等的串在equal中。比目標大的串在big中(尾插法)
while(go!=nullptr)
if(go->value < tail->value)else if(go->value == tail->value)else
go = go->next;
} // 連線三串鍊錶,注意邊界
go = head;
if(small!=nullptr)
if(equal!=nullptr)
if(big!= nullptr)
go->next = nullptr;
return head;
}
以下是包含測試的**:
#include#includeusing namespace std;
struct linknode;
linknode* getlink(int arr, int length);
void show(linknode* head);
linknode* getpartition(linknode* head);
int main();
// int arr1 = ;
// int arr1 = ;
int arr1 = ;
int length = sizeof(arr1)/sizeof(arr1[0]);
linknode* head1 = getlink(arr1,length);
linknode* partition = getpartition(head1);
show(partition);
return 0;
}linknode* getlink(int arr, int length)
return head;
}void show(linknode* head)
}linknode* getpartition(linknode* head)
linknode* go = head->next;
linknode* small = nullptr;
linknode* equal = nullptr;
linknode* big = nullptr;
//第一次遍歷,我們要找到第乙個 與最後乙個小的、和最後乙個相等的,比最後乙個大的
//注意空值得邊界
while(go!=nullptr)else if(equal==nullptr && go->value == tail->value)else if(big ==nullptr && go->value > tail->value)
} go = go->next;
} linknode* small_go = small;
linknode* equal_go = equal;
linknode* big_go = big;
go = head->next;
//遍歷鍊錶,在鍊錶中,除了上面找到的三個節點(可能沒有三個),其他比目標小的串在small鍊錶中,
//與目標相等的串在equal中。比目標大的串在big中(尾插法)
while(go!=nullptr)
if(go->value < tail->value)else if(go->value == tail->value)else
go = go->next;
} // 連線三串鍊錶,注意邊界
go = head;
if(small!=nullptr)
if(equal!=nullptr)
if(big!= nullptr)
go->next = nullptr;
return head;
}
左神基礎班 二維矩陣轉圈列印
乙個函式 控制從外圍列印一圈 另外乙個函式控制 列印最外圈,次外圈 再進去一圈。額。沒法描述了 囧 includeusing namespace std void myprint int matrix 4 int row1,int col1,int row2,int col2 void revolv...
左神基礎班 在陣列中找區域性最小值
很好的經驗 二分法並非只能在有序的陣列中才能使用,只要你確定某處必有你想要的東西,則可以利用二分法一步步縮小範圍查詢下去。演算法 先在最左和最右找有沒有 區域性最小,沒有的話,區域性最小必定在中間,則縮小範圍找下去 includeusing namespace std int findlocalmi...
鍊錶的基礎知識
鍊錶基礎知識 typedef int datatype typedef struct listnode listnode,pnode 鍊錶的初始化 void slistinit pnode phead 建立新結點 pnode buynewnode datatype data 尾插 void slis...