浙大資料結構習題1 單鏈表分段逆轉

2021-10-09 19:45:26 字數 801 閱讀 1863

題目概述

給定乙個帶頭結點的單鏈表和乙個整數k,要求你將鍊錶中的每k個結點做一次逆轉。例如給定單鏈表 1→2→3→4→5→6 和 k=3,你需要將鍊錶改造成 3→2→1→6→5→4;如果 k=4,則應該得到 4→3→2→1→5→6

資料形式

typedef

struct node *ptrtonode;

struct node

;typedef ptrtonode list;

/* 定義單鏈表型別 */

解題思路——雙重迴圈實現單鏈表分段逆轉

函式實現

void

k_reverse

( list l,

int k )

if(cntbreak

; head2=now;cnt=

1;nex=now->next;tail2=tail->next;

while

(cnthead->next=tail;

head2->next=tail2;

head=head2;

now=tail2;

}}

注意以下情況

有尾巴不反轉

位址取上下界

正好全反轉

k=nk=1

最後剩k-1個結點不反轉

有多餘結點

浙大資料結構 單鏈表逆轉

6 8 單鏈表逆轉 20 分 本題要求實現乙個函式,將給定的單鏈表逆轉。list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,...

浙大資料結構習題筆記 順序表與單鏈表

順序表的順序與鏈式儲存 自己碼了一遍兩種實現方式的函式模板,都是能直接執行起來的版本。順序儲存 include include define max size 100 typedef int elemtype typedef struct lnode list 線性表定義 struct lnode ...

資料結構習題(1) 單鏈表

部分基於之前的 1.設順序表va中的資料元素遞增有序。試寫一演算法,將x插入到順序表的適當位置上,以保持該錶的有序性。int insertsort pdseqlist pl,elem type val int index 0 for int i 0 i pl cursize i insertpos ...