我也不知道該叫什麼.就叫 鍊錶摺疊 吧題目:
給乙個單鏈表,形如
1 2 3 4 5
變成1 5 2 4 3
演算法複雜度要求為o(n)
思路:
先把後半部分反轉過來,
然後把後半部分 和 前半部分 合併.
用到的知識點:
構建單鏈表
鍊錶反轉
鍊錶合併(這個其實相當於插入了乙個節點)
遍歷單鏈表
# include using namespace std;
struct node
};node * head;
//輸入單鏈表
void input(int n)
else
}}//遍歷單鏈表
void show(node * p)
printf("\n");
}// 整體反轉
void reverse(node * p)
head = cur;
}//鍊錶摺疊
void halfreverse(node * phead)
if(len == 1) return;
int mid = len / 2;
p = phead;
int cnt = 0;
//找到鍊錶一半的位置
while(p != null)
node * halfhead = p;
//反轉完成後,cur存放後半部分鍊錶的起點
node * cur = null;
node * tem;
p = p->next;
while(p != null)
halfhead->next = null;
p = phead;
node * curtem;
while(p != null)else
p = tem;
cur = curtem;
}}int main()
鍊錶操作面試題
include using namespace std struct node int value node next node find node phead,int t 一 刪除鍊錶中某個節點 思路 先找到要刪除的節點位置 bool deletet node phead,int t else e...
鍊錶的面試題
1 比較順序表和煉表的優缺點,它們分別在什麼場景下使用?1 順序表支援隨機訪問,單鏈表不支援隨機訪問。2 順序表插入 刪除資料效率很低,時間複雜度為o n 除尾插和尾刪 單鏈表插入 刪除效率更高,時間複雜度為o 1 3 順序表的cpu高速緩衝效率更高,單鏈表cpu高速緩衝效率低。2 列印單向鍊錶 v...
鍊錶操作面試題
include include include define datetype int typedef struct node node,pnode void printlist pnode head 列印鍊錶 printf null n void bubblesort pnode phead 使用...