題目:將單向鍊錶按某值劃分稱左邊小,中間相等,右邊大的形式
給定乙個單鏈表的頭節點head,節點的值型別是整型,再給定乙個整數pivot,實現乙個調整鍊錶的函式,將鍊錶調整為左部分小於pivot的節點,中間部分等於pivot的節點,右部分都是大於pivot的節點
陣列解法:
node listpartition1(node head,int pivot)
node cur=head;
int i=0;
while(cur!=null)
node nodearr=new node[i];
i=0;
cur=head;
for(int i=0;i!=nodearr.length;i++)
arrpartition(nodearr,pivot);
for(int i=0;i!=nodearr.length;i++)
nodearr[i-1]->next=null;
return nodearr[0];
}
高階指標解法
node listpartition2(node head,int pivot)
}else if(head->value==pivot)
else
}else
else
}head=next;//向下遍歷
} if(st!=null)//如果有小於區域
if(et!=null)//如果有等於區域
return sh!=null?sh:(eh!=null?eh:mh);
}
將單鏈表按基準劃分
include include typedef char elemtype typedef struct lnode linknode 宣告單鏈表結點型別 尾插法建立單鏈表 static void create list rear linknode l,elemtype a,int n 指標的引用 ...
區域劃分總結
直線切割平面 當乙個平面上沒有直線的時候,可以看成被分成了1份 有1條直線的時候,沒有結點,多了 1部分 有2 條直線的時候,多了 1個節點,多了 2部分 有3 條直線的時候,多了 2個節點,多了 3部分 第n條直線 0 1234 節點數0 00 1 1 21 2 3 區域數1 1 11 1 2 1...
c 記憶體區域劃分
c 中,記憶體分為5個區域 堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。其中 棧 就是那些編譯器在需要的時候分配,不需要的時候清理的變數的儲存區域,比如區域性變數和函式引數。在記憶體中連續儲存的區域,位址從低到高。堆 就是new分配的記憶體塊,需要delete。如果沒有delete,在程式退...