<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單向鏈表基本操作的遞歸實(shí)現

單向鏈表基本操作的遞歸實(shí)現

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò ) 收藏

/*最大值*/
int max_list(List *head)
{
int max = 0;
int temp;
if(NULL == head)
{
printf("Error: NULL pointer...");
}

本文引用地址:http://dyxdggzs.com/article/201612/324524.htm

if(NULL != head && head->next == NULL)
{
return head->val;
}

else
{
temp = max_list(head->next);

max = (head->val > temp ? head->val : temp);

return max;
}
}

/*最小值*/
int min_list(List *head)
{
int min = 0;
int temp;

if(NULL == head)
{
printf("Error: NULL pointer...");
}

if(NULL != head && head->next == NULL)
{
returnhead->val;
}

else
{
temp = min_list(head->next);

min = (head->val < temp ? head->val : temp);

return min;
}
}

/*創(chuàng )建鏈表*/
List* create_list(int val)
{
List *head = (List *)malloc(sizeof(List)/sizeof(char));

if(NULL == head)
{
return NULL;
}

head->val = val;

head->next= NULL;

return head;
}

/*插入節點(diǎn)*/
List* insert_listnode(List *head, int val)
{
List *temp;
if(NULL == head)
{
return NULL;
}

temp = (List *)malloc(sizeof(List)/sizeof(char));
temp->val = val;
temp->next = head;
head = temp;

returnhead;
}

/*刪除鏈表*/
void delete_list(List *head)
{
List *temp = NULL;
if(head != NULL)
{
temp = head;
head = head->next;
free(temp);
temp = NULL;

delete_list(head);
}
}

int main()
{
int n = 0;
int i = 0;
List *head= create_list(10);

for(i = 0; i < 10; ++ i)
{
n = 1 + (int)(10.0*rand()/(RAND_MAX + 1.0));

head = insert_listnode(head, n);
}

fdprint_listnode(head);

printf("");

bkprint_listnode(head);

printf("%d", count_listnode(head));

printf("");
#if 10
head = delete_node(head, 10);
fdprint_listnode(head);
printf("");

bkprint_listnode(head);
printf("");
#endif

#if 10
head = delete_allnode(head, 10);
fdprint_listnode(head);

printf("");

bkprint_listnode(head);
#endif

printf("max = %d",max_list(head));
printf("max = %d",min_list(head));
delete_list(head);

head = NULL;

if(head== NULL)
{
printf("ERROR:null pointer!...");
}
return 0;
}

遞歸中需要注意的思想我任務(wù)就是為了解決當前的問(wèn)題,我完成最簡(jiǎn)單的一部操作,其他的由別人去完成,比如漢諾塔中的第一個(gè)和尚讓第二個(gè)和尚把前63個(gè)金盤(pán)放在B處,而他自己只需要完成從A到C的搬運,實(shí)質(zhì)上他自己完成的只有一部最簡(jiǎn)答的,但是搬運這種動(dòng)作有存在非常大的相似性。

因此為了解決當前的問(wèn)題f(n),就需要解決問(wèn)題f(n-1),而f(n-1)的解決就需要解決f(n-2),這樣逐層的分解,分解成很多相似的小事件,當最小的事件解決完成以后,就能解決高層次的事件,這種逐層分解,逐層合并的方式就構成了遞歸的思想,最主要的要找到遞歸的出口和遞歸的方式,搞清楚了這兩個(gè),實(shí)現一個(gè)遞歸問(wèn)題相對來(lái)說(shuō)就比較簡(jiǎn)單啦。

但是遞歸也存在問(wèn)題,特別是深層次的遞歸可能導致??臻g的溢出,因為堆??臻g的大小并不是無(wú)限大的,特別當遞歸中數據量特別大的情況下,遞歸很有可能導致??臻g的溢出,因此遞歸并不是萬(wàn)能的,但是遞歸確實(shí)是一種思考問(wèn)題的方式,一種反向思考的形式,從結果到具體的小過(guò)程。當然具體的問(wèn)題就要具體分析啦。

用一句簡(jiǎn)單的話(huà)記住遞歸就是:我完成最簡(jiǎn)單的那一步,其他的復雜的相似問(wèn)題都找別人去做吧。


上一頁(yè) 1 2 下一頁(yè)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>