左神基礎班 鍊錶的partition

2021-09-13 00:15:37 字數 2466 閱讀 1088

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...