日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每日微软面试题

發布時間:2023/12/18 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每日微软面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每日微軟面試題——day 1

<以下微軟面試題全來自網絡>

<以下答案與分析純屬個人觀點,不足之處,還望不吝指出^_^>

題:.編寫反轉字符串的程序,要求優化速度、優化空間。

分析:構建兩個迭代器p 和 q ,在一次遍歷中,p的位置從字串開頭向中間前進,q從字串末尾向中間后退,反轉字串只要每次遍歷都交換p和q所指向的內容即可,直到p和q在中間相遇,這時循環次數剛好等于 字串的長度/2。

實現代碼:


[cpp] view plaincopy
  • /**?
  • author:?花心龜?
  • blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • ??
  • #include?<stdio.h>??
  • void?reverse(char?*_str,int?_l)?//反轉函數,_l指要反轉字串的長度??
  • {??
  • ?char?*p=_str,*q=_str+_l-1,temp;??
  • ??
  • ?while(q>p)??
  • ???{???
  • ?????temp=*p;??
  • ?????*p=*q;??
  • ?????*q=temp;??
  • ???
  • ?????p++;??
  • ?????q--;??
  • ???}??
  • }??
  • ???
  • int?main()??
  • {??
  • ??charstr0[11]=?"0123456789";???????
  • ?reverse(str0,sizeof(str0)-1);??
  • ?printf("str0?=?%s\n",str0);??
  • ???
  • ??char?str1[6]="01234";??
  • ?reverse(str1,sizeof(str1)-1);??
  • ?printf("str1?=?%s",str1);??
  • ??return?0;??
  • }??



  • 題:.在鏈表里如何發現循環鏈接?

    分析:可以構建兩個迭代器p和pp,p一次向移動一個節點,pp一次移動兩個節點,如果p和pp在某個時刻指向了同一個節點,那么該鏈表就有循環鏈接。

    實現代碼:

    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • #include?<stdio.h>??
  • #include?<malloc.h>??
  • ??
  • #define?TEST??
  • ??
  • struct?list_node??
  • {??
  • ??int?data;??
  • ??list_node?*?next;??
  • };??
  • list_node?*head;?//指向頭結點??
  • ??
  • void?list_create()??
  • {??
  • ??int?i;??
  • ??list_node?*p=NULL;??
  • ??head?=?(list_node*)malloc(sizeof(list_node));??
  • ??head->data=0;?????//頭結點數據設為??
  • ??head->next?=?NULL;??
  • ??
  • ??p=head;??
  • ??for(i=1;?i<6;?i++)?//創建個結點??
  • ????{??
  • ??????p->next?=?(list_node*)malloc(sizeof(list_node));??
  • ??????p->next->data?=?i;??
  • ??????p->next->next?=?NULL;??
  • ??????p=p->next;??
  • ????}??
  • ??p->next?=?head;??//使尾結點的下一個結點指針指向頭結點,構成循環鏈表??
  • ??
  • #ifdef?TEST??
  • ??p=head;??
  • ??for(i=0;?i<12&&p!=NULL;?i++)??
  • ????{??
  • ??????printf("%d?",p->data);??
  • ??????p=p->next;??
  • ????}??
  • ??printf("\n");??
  • #endif??
  • }??
  • ??
  • void?cycleList_test()??
  • {??
  • ??if(head==NULL?||?head->next?==?NULL)??
  • ??????return;??
  • ??list_node?*p=NULL,*pp=NULL;??
  • ??p=head;??
  • ??pp=head->next->next;??
  • ??while(p!=pp?)??
  • ????{??
  • ??????p=p->next;??
  • ??????pp=pp->next->next;??
  • ??
  • ??????if(p==NULL?||?pp==NULL)??
  • ????{??
  • ??????printf("不是循環鏈表");??
  • ??????return?;??
  • ????}??
  • ????}??
  • ??printf("是循環鏈表");??
  • }??
  • ??
  • void?list_destroy()??
  • {??
  • ??list_node?*pmove=NULL,*pdel=NULL;??
  • ??pmove=head->next;??
  • ??
  • ?while(pmove!=head)??
  • ???{??
  • ?????pdel=pmove;??
  • ?????pmove=pmove->next;??
  • ?????free(pdel);?????
  • ???}??
  • ??
  • ??free(head);??
  • }??
  • int?main()??
  • {??
  • ??list_create();???//構建循環鏈表??
  • ??cycleList_test();//測試是否是循環鏈表??
  • ??list_destroy();??//銷毀鏈表??
  • ??return?0;??
  • }?


  • 題:.給出洗牌的一個算法,并將洗好的牌存儲在一個整形數組里。

    分析:首先54張牌分別用0到53 的數值表示并存儲在一個整形數組里,數組下標代表紙牌所在的位置。接下來,遍歷整個數組,在遍歷過程中隨機產生一個隨機數,并以該隨機數為下標的數組元素與當前遍歷到的數組元素進行對換。時間復雜度為O(n) (注:所得到的每一種結果的概率的分母越大越好)

    實現代碼:

    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • ??
  • #include?<stdio.h>??
  • #include?<time.h>??
  • #include?<stdlib.h>??
  • ??
  • void?shuffle(int?boke[])??//洗牌??
  • {??
  • ??int?i,r,t;??
  • ??srand((unsigned)time(NULL));?//隨機數種子??
  • ??for(i=0;?i<54;?i++)??
  • ????{??
  • ??????r=(rand()%107)/2;??
  • ??
  • ??????//交換??
  • ??????t=boke[i];??
  • ??????boke[i]=boke[r];??
  • ??????boke[r]=t;??
  • ????}??
  • }??
  • ??
  • int?main()??
  • {??
  • ??int?boke[54],i;??
  • ??for(i=0;i<54;i++)?//初始化紙牌??
  • ????boke[i]=i;??
  • ??
  • ??printf("before?shuffle:\n");??
  • ??for(i=0;?i<54;?i++)????//打印??
  • ??????printf("%d?",boke[i]);??
  • ??
  • ??
  • ??shuffle(boke);?????//洗牌??
  • ??
  • ??
  • ??printf("\nafter?shuffle:\n");??
  • ??for(i=0;?i<54;?i++)???//打印??
  • ??????printf("%d?",boke[i]);??
  • ??
  • ??return?0;??
  • }??



  • 題:寫一個函數,檢查字符串是否是整數,如果是,返回其整數值。

    (或者:怎樣只用4行代碼編寫出一個從字符串到長整形的函數?)

    分析:略

    實現代碼:

    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • ??
  • #include?<stdio.h>??
  • ??
  • long?convert(const?char?*str)?//?4行代碼?下面我用了四句語句,不知當不當否,權當娛樂^^??
  • {??
  • ??long?value=0,f=1;?????//f將決定value是否為負數??
  • ??
  • ??if(*str?==?'-')?str++,f=-1;??
  • ??
  • ??for(;*str!='\0'?&&?*str>='0'?&&?*str<='9';?str++)??
  • ????value=value*10+(*str-'0');????
  • ??
  • ??return?*str=='\0'?value*f:0;??//如果不為整數返回??
  • }??
  • ??
  • int?main()??
  • {??
  • ??
  • ??char?str0[]?=?"1234567";??
  • ??printf("%d\n",convert(str0));??
  • ??
  • ??char?str1[]?=?"4.56";??
  • ??printf("%d\n",convert(str1));??
  • ??
  • ??char?str2[]?=?"-1234567";??
  • ??printf("%d\n",convert(str2));??
  • ??
  • ??char?str3[]?=?"-4.56";??
  • ??printf("%d\n",convert(str3));??
  • ????
  • ??return?0;??
  • }?


  • 題:怎樣從頂部開始逐層打印二叉樹結點數據?請編程。

    分析不用遞歸,定義兩個棧(或數組),也能方便漂亮地搞定。首先棧1存儲第一層中的節點也就是根節點,然后每次循環,打印棧1中的元素,再將棧1中的節點更新為下一層中的節點。總共循環logn+1次。


    實現代碼(以下遺漏了對二叉樹的銷毀操作):


    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • #include?<stdio.h>??
  • #include?<malloc.h>??
  • ??
  • typedef?struct?bt_node??
  • {??
  • ??int?data;??
  • ??struct?bt_node?*rchild;??
  • ??struct?bt_node?*lchild;??
  • }BinTree,node_t;??
  • ??
  • BinTree?*myTree;??
  • ??
  • node_t*?bt_new_node(int?data)??
  • {??
  • ??node_t*?node?=?(node_t*)malloc(sizeof(node_t));??
  • ??node->rchild?=?NULL;??
  • ??node->lchild?=?NULL;??
  • ??node->data?=?data;??
  • ??
  • ??return?node;??
  • }??
  • void?bt_create()??
  • {??
  • ??//第一層根節點,數字11表示第一層的第一個位置,以下類似??
  • ??myTree?=?bt_new_node(11);??
  • ??
  • ??//創建第二層節點???
  • ??myTree->lchild?=?bt_new_node(21);??
  • ??myTree->rchild?=?bt_new_node(22);???
  • ??
  • ??
  • ??//創建第三層節點??
  • ??myTree->lchild->lchild?=?bt_new_node(31);??
  • ??myTree->lchild->rchild?=?bt_new_node(32);??
  • ??myTree->rchild->lchild?=?bt_new_node(33);??
  • ??myTree->rchild->rchild?=?bt_new_node(34);??
  • ??
  • ??//創建第四層節點??
  • ??myTree->rchild->rchild->rchild?=?bt_new_node(48);??
  • }??
  • ??
  • void?print_layer_by_layer()??//逐層打印二叉樹非遞歸算法(主題)??
  • {??
  • ??node_t*?stack1[100]={0};//棧??
  • ??node_t*?stack2[100]={0};//棧??
  • ??int?T1=0,T2=0;???????????//棧頂下標??
  • ??
  • ??
  • ??stack1[T1++]=myTree;???//根節點入棧??
  • ??while(T1)?//若棧為空則停止循環??
  • ????{??
  • ??????while(T1)??
  • ????{??
  • ??????T1--;??
  • ??????printf("%d?",stack1[T1]->data);?//打印棧頂元素??
  • ??????stack2[T2++]=stack1[T1];????????//將棧元素轉存到棧2中??
  • ????}??
  • ??????printf("\n");??
  • ??
  • ??????//此時棧已存儲了當前行的各元素??
  • ??????//通過棧得到下一行中的節點并更新到棧中??
  • ??????while(T2)????
  • ????{??
  • ??????T2--;??
  • ??????if(stack2[T2]->rchild?!=?NULL)??
  • ????????stack1[T1++]=stack2[T2]->rchild;??
  • ??
  • ??????if(stack2[T2]->lchild?!=?NULL)??
  • ????????stack1[T1++]=stack2[T2]->lchild;??
  • ????}??
  • ????}??
  • }??
  • int?main()??
  • {??
  • ??bt_create();????????????//創建二叉樹??
  • ??print_layer_by_layer();?//逐層打印??
  • ??return?0;??
  • }??

  • 另:關于此題的其它想法請看3樓我的回復,回復上的編碼步驟為廣度優先遍歷二叉樹算法,不過本人不才哈,不知題目中的意思是一層一層的打印呢,還是按照層的順序從左到右一個一個打印呢(好像也是逐層打印),且不管它,通過對兩種算法比較,上面使用棧的算法功能更強,至少打完一層可以再打一個回行。而使用隊列的廣度優先遍歷二叉樹算法有效率優勢,且代碼簡潔易懂,就是不能打完一層后回行。^_^ 純屬個人觀點,望不吝指教。


    題:怎樣把一個鏈表掉個順序(也就是反序,注意鏈表的邊界條件并考慮空鏈表)?

    分析:這題比較有意思,我想了個高效的實現。首先定義兩個迭代器 p 和 q,q從第一個節點開始遍歷,p從第二個節點開始遍歷,每次遍歷將頭指針的next指向p的next,然后將p的next 反指向q(此時q是p的前一個節點),也就是說將每個節點的鏈接方向掉過來,最后尾節點變成了頭節點,頭節點變成了尾節點,時間復雜度為高效的O(n)


    圖示:(最后一個N指空節點)


    以下便是是我簡潔的實現代碼:

    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • ???
  • #include?<stdio.h>??
  • #include?<malloc.h>??
  • ???
  • #define?TEST??
  • ???
  • typedef?struct?list_node??
  • {??
  • ??int?data;??
  • ??structlist_node?*?next;??
  • }list_node;??
  • ???
  • list_node?*head;?//頭結點??
  • ???
  • void?list_create()??
  • {??
  • ??int?i;??
  • ??list_node?*p;??
  • ??head?=?(list_node*)malloc(sizeof(list_node));??
  • ??head->data=0;?????//頭結點數據設為??
  • ??head->next?=?NULL;??
  • ???
  • ??p=head;??
  • ??for(i=1;i<6;?i++)?//創建5個結點??
  • ????{??
  • ??????p->next?=?(list_node*)malloc(sizeof(list_node));??
  • ??????p->next->data?=?i;??
  • ??????p->next->next?=?NULL;??
  • ??????p=p->next;??
  • ????}??
  • ???
  • #ifdef?TEST??
  • ??p=head;??
  • ??while(p!=NULL)???//打印該鏈表??
  • ????{??
  • ??????printf("%d",p->data);??
  • ??????p=p->next;??
  • ????}??
  • ??printf("\n");??
  • #endif??
  • }??
  • ???
  • void?list_reverse()??//使鏈表反序?(主題)??
  • {??
  • ??printf("^^after?reversing:\n");??
  • ??if(head?==?NULL?||?head->next==NULL)?return?;//如果head為空,則返回??
  • ??list_node?*p,*q;??
  • ??q=head;??
  • ??p=head->next;??
  • ???
  • ??while(p!=NULL)??
  • ????{??
  • ????head->next=p->next;?//將頭指針的next指向p的下一個節點??
  • ????p->next=q;??????????//將p的next值反指向它的前一個節點q??
  • ????q=p;????????????????//q移向p的位置??
  • ????p=head->next;???????//p移向它的下一個位置??
  • ????}??
  • ?????
  • ????head?=?q;??
  • ???
  • #ifdef?TEST??
  • ??p=head;??
  • ??while(p!=NULL)????????//打印該鏈表??
  • ????{??
  • ??????printf("%d",p->data);??
  • ??????p=p->next;??
  • ????}??
  • ??printf("\n");??
  • #endif??
  • ???
  • }??
  • ???
  • void?list_destroy()??//銷毀函數??
  • {??
  • ??list_node?*pmove=NULL,*pdel=NULL;??
  • ??pmove=head;??
  • ???
  • ?while(pmove!=head)??
  • ???{??
  • ?????pdel=pmove;??
  • ?????free(pdel);????
  • ?????pmove=pmove->next;??
  • ???}??
  • }??
  • int?main()??
  • {??
  • ??list_create();???//構建單鏈表??
  • ??list_reverse();??//反轉鏈表??
  • ??list_destroy();??//銷毀鏈表??
  • ??return?0;??
  • }?


  • 題:求隨機數構成的數組中找到長度大于=3的最長的等差數列

    輸出等差數列由小到大:?

    如果沒有符合條件的就輸出[0,0]

    格式:

    輸入[1,3,0,5,-1,6]

    輸出[-1,1,3,5]

    要求時間復雜度,空間復雜度盡量小

    分析基本算法思路(采用動態規劃思想):首先,只要得到數列的公差和一個首項就可以確定一個等差數列,因此我們要尋找最長等差數列的公差以及首項。其次,為了方便查找公差和首項,我們應該將原數組進行由小到大排序,這樣各兩數之間的公差也是成遞增形勢的,這樣我們就可以避免回溯查找首項

    因此,在搜尋公差及首項的過程中,我們可以分兩三個決策階段:

    1、如果公差為0,應該做何處理。

    2、如果公差不為0,應該做何處理。

    3、如果找到的數列長度是當前最長的做相應的處理

    ? ? ? 針對以上情況,我們應該選擇一種合適的數據結構——平衡排序樹,stl中的set,map,mutiset,multimap是以紅黑樹結構為形勢的容器,無疑是非常合適的,根據題目情況,可能存在具有相同元素的數組,因此我們選擇multiset,這樣無論我們對數據進行插入排序,查找都是比較高效的,因此總體上是可以滿意的。

    ? ? ? 最后有幾項時間上的優化不在這里說明,詳情可看代碼。若有不足之處,望能不吝指出!^_^


    我的實現代碼:


    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • #include?<iostream>??
  • #include?<ctime>??
  • #include?<set>??
  • using?namespace?std;??
  • ??
  • void?show_longest_seq(const?multiset<int>&?myset)??
  • {??
  • ????int?maxLength?=?0,?curr_pos?=?0,?curr_d?=?0,?counter=0,i=0;?//一些輔助變量??
  • ????int?d_result,?a1_result;?//存儲最長等差數列的公差以及首項??
  • ????multiset<int>::const_iterator?set_it1,set_it2;??
  • ??
  • ??????
  • ????/*?
  • ?????????(主題)尋找長度最長的等差數列,最壞情況下時間復雜度為O(n^3)?
  • ????*/??
  • ????for(set_it1?=?myset.begin();?set_it1?!=?myset.end();)??
  • ????{??
  • ????????for(set_it2=set_it1,set_it2++;?set_it2?!=?myset.end();)//第二層循環從set_it1所指的下一個元素開始遍歷??
  • ????????{??
  • ????????????curr_d?=?*set_it2?-?*set_it1;?//算得當前公差,注意由于set為自排序容器,從小到大排列,所以curr_d恒為正??
  • ??
  • ????????????if(curr_d?==?0)?//?如果公差為0??
  • ????????????{??
  • ????????????????counter?=?myset.count(*set_it1);??
  • ????????????????set_it2?=?myset.upper_bound(*set_it1);//(優化項)跳過與set_it1相等的元素??
  • ????????????}??
  • ????????????else??
  • ????????????{??
  • ????????????????counter?=?2;?//(優化項)最小長度要求要不小于所以直接從開始累加??
  • ????????????????while(myset.find(*set_it1?+?counter*curr_d)?!=?myset.end())?//計算數列項個數??
  • ????????????????????++counter;??
  • ??
  • ????????????????set_it2?=?myset.upper_bound(*set_it2);//?(優化項)跳過與*set_it2相等的元素??
  • ????????????}??
  • ??
  • ??????????????
  • ????????????if(counter?>?maxLength)??//如果新數列長度大于maxLength??
  • ????????????{??
  • ????????????????d_result?=?curr_d;??
  • ????????????????a1_result?=?*set_it1;??
  • ????????????????????????maxLength?=?counter;??
  • ????????????}??
  • ????????}??
  • ??
  • ????????curr_pos?+=?myset.count(*set_it1);?????//計算第一層循環遍歷到的當前位置??
  • ????????if(myset.size()-curr_pos?<?maxLength)??//?(優化項)如果集合中剩下的元素小于最大數列長度,就退出循環??
  • ????????????break;??
  • ??
  • ????????set_it1?=?myset.upper_bound(*set_it1);?//下一次set_it1?的位置,并跳過相同元素??
  • ????}??
  • ??
  • ??
  • ??
  • ??
  • ????/*?
  • ???????打印最長等差數列?
  • ????*/??
  • ????if(maxLength?<=?2)??
  • ????{??
  • ????????cout<<"longest_seq:[0,0]"<<endl;??
  • ????}??
  • ????else??
  • ????{??
  • ????????cout<<"longest_seq:";??
  • ??????????
  • ????????for(i?=?0;?i<maxLength;??i++)??
  • ????????????cout<<*(myset.find(a1_result?+?i*d_result))<<'?';??
  • ??
  • ????????cout<<endl;??
  • ????}??
  • }??
  • //Blog:http://blog.csdn.net/zhanxinhang??
  • ?test?in?main??
  • int?main()??
  • {??
  • ????int?a[]={1,3,0,5,-1,6};??
  • ????multiset<int>?myset;??
  • ????myset.insert(a,a+6);??
  • ????show_longest_seq(myset);??
  • ????cout<<endl;??
  • ??
  • ????int?l;??
  • ????srand((unsigned)time(NULL));??
  • ????for(int?j?=?0;?j?<?5;?j++)??
  • ????{??
  • ????????myset.clear();??
  • ????????cout<<"input:[?";??
  • ????????l=rand()%10;??
  • ????????for(int?i?=?0;?i?<?l;?++i)??
  • ????????{??
  • ????????????int?element?=?rand()%10;??
  • ????????????myset.insert(element);??
  • ????????????cout<<element<<'?';??
  • ????????}??
  • ????????cout<<']'<<endl;??
  • ????????show_longest_seq(myset);??
  • ????????cout<<endl;??
  • ????}??
  • ??
  • ??
  • ????return?0;??
  • }??


  • 附一張測試結果圖:





    題:兩個鏈表,一升一降。合并為一個升序鏈表。

    分析假設升序的鏈表為鏈表1,降序的鏈表為鏈表2,p1,p2分別作為它們的迭代器,還有一個合并鏈表用于存放合并后的數據

    法一、最容易想到的且容易實現的就是使兩個表都變成升序,然后就是經典的合并排序算法的步驟了,步驟是構建p1,p2兩個迭代器,分別用于迭代兩個鏈表,每次遍歷,若p1所指的節點數據大于p2所指的節點數據則將p1所指的節點數據插入到要合并鏈表中去且使p1指向下一個節點,否則將p2將所指的節點數據插入到合并鏈表中去且使p2指向下一個節點,直到p1和p2任意一個指向了NULL為止。最后可能兩個鏈表中尚有剩余的節點,將其逐個插入到合并鏈表中去即可。

    法二、使用遞歸方法后序遍歷降序鏈表2,遍歷順序就相當于升序的順序了。在遞歸遍歷鏈表2的過程中,需要處理有以下三件事:(注意順序)

    (1) 如果p2的數據小于p1的就插入到合并鏈表中 (2) 如果p2的數據大于p1,那么就對鏈表1循環遍歷,每次將p1中的數據插到合并鏈表中,直到p2不大于p1,且p1不為空

    (3) 如果p1為空,就直接將p2插入到合并鏈表中

    (這個方法你想到了沒!)

    完整實現代碼: [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • ???
  • #include?<stdio.h>??
  • #include?<malloc.h>??
  • #include?<stdlib.h>???
  • ??
  • typedef?struct?list_node??
  • {??
  • ??int?data;??
  • ??struct?list_node?*?next;??
  • }list_node;??
  • ???
  • list_node?*list1=NULL;?//鏈表頭結點??
  • list_node?*list2=NULL;?//鏈表頭結點??
  • ??
  • void?list_print(const?list_node?*p)//打印該鏈表函數??
  • {??
  • ??if(p==NULL)return;??
  • ??while(p!=NULL)?????
  • ????{??
  • ??????printf("%d?",p->data);??
  • ??????p=p->next;??
  • ????}??
  • ??printf("\n");??
  • }??
  • ??
  • void?list_create(list_node*?&head,?int?data[],?int?N)??
  • {??
  • ??if(data?==?NULL)?return;??
  • ??
  • ??int?i;??
  • ??list_node?*p;??
  • ??p?=?(list_node*)malloc(sizeof(list_node));??
  • ??p->data?=?data[0];??
  • ??p->next?=?NULL;??
  • ??head?=?p;???
  • ??for(i=1;i<N;?i++)???
  • ????{??
  • ??????p->next?=?(list_node*)malloc(sizeof(list_node));??
  • ??????p->next->data?=?data[i];??
  • ??????p->next->next?=?NULL;??
  • ??????p=p->next;??
  • ????}??
  • }??
  • ??
  • void?list_reverse(list_node*?&head)??//使鏈表反序??
  • {??
  • ??if(head?==?NULL)?return?;//如果head1為空,則返回??
  • ??list_node?*p,*q;??
  • ??q=head;??
  • ??p=head->next;??
  • ???
  • ??while(p!=NULL)??
  • ????{??
  • ????head->next=p->next;?//將頭指針的next指向p的下一個節點??
  • ????p->next=q;??????????//將p的next值反指向它的前一個節點q??
  • ????q=p;????????????????//q移向p的位置??
  • ????p=head->next;???????//p移向它的下一個位置??
  • ????}??
  • ??
  • ????head?=?q;??
  • }??
  • ??
  • void?list_destroy(list_node?*head)??//銷毀函數??
  • {??
  • ??list_node?*pmove=NULL,*pdel=NULL;??
  • ??pmove=head;??
  • ???
  • ?while(pmove!=head)??
  • ???{??
  • ?????pdel=pmove;??
  • ?????free(pdel);????
  • ?????pmove=pmove->next;??
  • ???}??
  • }??
  • ??
  • list_node*?merge_two_list()?//合并鏈表1和鏈表2(法一)??
  • {??
  • ????list_reverse(list2);????//反轉鏈表使之與鏈表一樣升序排列??
  • ????list_node?*list_merged;??//和并后的鏈表??
  • ????list_node?*p1,*p2,*p0;????????
  • ????list_merged?=?(list_node*)malloc(sizeof(list_node));??
  • ????list_merged->data?=?0;??
  • ????list_merged->next?=?NULL;??
  • ????p0?=?list_merged;??
  • ??
  • ????p1=list1;??
  • ????p2=list2;??
  • ????while(p1!=NULL?&&?p2!=NULL)??
  • ????{??
  • ????????if(p1->data?<?p2->data)??
  • ????????{??
  • ????????????p0->next=(list_node*)malloc(sizeof(list_node));??
  • ????????????p0->next->data=p1->data;??
  • ????????????p0->next->next=NULL;??
  • ????????????p0=p0->next;??
  • ????????????p1=p1->next;??
  • ????????}??
  • ????????else??
  • ????????{??
  • ????????????p0->next=(list_node*)malloc(sizeof(list_node));??
  • ????????????p0->next->data=p2->data;??
  • ????????????p0->next->next=NULL;??
  • ????????????p0=p0->next;??
  • ????????????p2=p2->next;??
  • ????????}??
  • ????}??
  • ????while(p1!=NULL)??
  • ????{??
  • ????????????p0->next=(list_node*)malloc(sizeof(list_node));??
  • ????????????p0->next->data=p1->data;??
  • ????????????p0->next->next=NULL;??
  • ????????????p0=p0->next;??
  • ????????????p1=p1->next;??
  • ????}??
  • ????while(p2!=NULL)??
  • ????{??
  • ????????????p0->next=(list_node*)malloc(sizeof(list_node));??
  • ????????????p0->next->data=p2->data;??
  • ????????????p0->next->next=NULL;??
  • ????????????p0=p0->next;??
  • ????????????p2=p2->next;??
  • ????}??
  • ????return?list_merged;??
  • }??
  • ??
  • ??
  • ??
  • list_node*?p0=(list_node*)malloc(sizeof(list_node));??
  • list_node*?phead=p0;??
  • list_node*?&p1=list1;?//p1與list1綁定??
  • list_node*?foreach(list_node*?p2)?//遞歸合并(法二)??
  • {??
  • ????if(p2==NULL)?return?phead;??
  • ??
  • ????foreach(p2->next);???
  • ??
  • ????if(p1->data?>?p2->data)??
  • ????{??
  • ????????p0->next?=?(list_node*)malloc(sizeof(list_node));??
  • ????????p0->next->data?=?p2->data;??
  • ????????p0->next->next?=?NULL;???
  • ????????p0=p0->next;??
  • ????????return?phead;??
  • ????}??
  • ????while(p1!=NULL?&&?p1->data<=p2->data)??
  • ????{??
  • ????????p0->next?=?(list_node*)malloc(sizeof(list_node));??
  • ????????p0->next->data?=?p1->data;??
  • ????????p0->next->next?=?NULL;???
  • ????????p0=p0->next;??
  • ????????p1?=?p1->next;??
  • ????}??
  • ????if(p1==NULL)??
  • ????{??
  • ????????p0->next?=?(list_node*)malloc(sizeof(list_node));??
  • ????????p0->next->data?=?p2->data;??
  • ????????p0->next->next?=?NULL;???
  • ????????p0=p0->next;??
  • ????}??
  • ??
  • ????return?phead;??
  • }??
  • //Blog:http://blog.csdn.net/zhanxinhang??
  • int?main()??
  • {??
  • ????int?list1_data[]?=?{1,4,6,8,10};????//鏈表數據升序?可在這里該數據進行測試??
  • ????int?list2_data[]?=?{14,9,3,2};??????//鏈表數據降序??
  • ??
  • ????list_create(list1,list1_data,5);???//構建單鏈表??
  • ????list_create(list2,list2_data,4);???//構建單鏈表??
  • ????list_print(list1);??
  • ????list_print(list2);??
  • ??
  • ????//list_node?*list_merged=merge_two_list();?//合并兩個鏈表??
  • ????//list_print(list_merged->next);??????//打印合并后的鏈表??
  • ??
  • ????list_node?*list_merged2=foreach(list2);????//使用遞歸合并兩個鏈表??
  • ????list_print(list_merged2->next);??
  • ??
  • ????list_destroy(list1);????????????????//銷毀鏈表??
  • ????list_destroy(list2);????????????????//銷毀鏈表??
  • //??list_destroy(list_merged);??????????//銷毀合并后的鏈表??
  • ????list_destroy(list_merged2);?????????//銷毀合并后的鏈表??
  • ????system("pause");??
  • ????return?0;??
  • }??


  • :如何刪除鏈表的倒數第m的元素?

    分析構建p0,p1兩個迭代器,初始使p0和p1指向頭結點,接著使p1移動到第m+1項,然后指向頭得p0與p1同時前進,當p1指向空節點的時候結束,這時p0所指的位置就是倒數第m個,時間復雜度為O(n)

    實現代碼:(為了學習的需要,現在C++朋友采用c++實現,不能滿足c朋友要采用c實現的愿望,此實為c++朋友的遺憾,不過一切重在思想。^_^

    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • #include?<iostream>??
  • #include?<list>??
  • using?namespace?std;??
  • ??
  • class?App??
  • {??
  • ????list<int>?*plist;???
  • ??
  • ????void?delete_node_at_last(int?m)?//today`s?topic??
  • ????{??
  • ????????list<int>::iterator?p0,?p1;??
  • ????????p0=p1=p2=plist->begin();??
  • ??
  • ????????//使p1移到第m+1項??
  • ????????for(int?i=1;?i<=m;?i++)??
  • ????????????p1++;??
  • ??
  • ????????//p0和p1同時前進,當p1到達終點時p0所指向的就是倒數第m個節點??
  • ????????while(p1!=plist->end())??
  • ????????????p0++,p1++;??
  • ??
  • ????????//刪除節點??
  • ????????plist->erase(p0);??
  • ????}??
  • ??
  • ????void?create_list()??
  • ????{??
  • ????????int?list_data[]={1,2,3,4,5,6,7,8,9};?//鏈表數據??
  • ????????plist?=?new?list<int>(list_data,?list_data+sizeof(list_data)/sizeof(int));??
  • ????}??
  • ??
  • ????void?print_list()??
  • ????{??
  • ????????list<int>::iterator?it;??
  • ????????for(it=plist->begin();?it!=plist->end();?it++)??
  • ????????????cout<<*it<<'?';??
  • ????}??
  • ??
  • public:??
  • ????//test?in?run?funtion??
  • ????void?run()??
  • ????{??
  • ????????create_list();??
  • ????????delete_node_at_last(3);?//刪除倒數第三個節點??
  • ????????print_list();??
  • ????}??
  • ??
  • ????~App()??
  • ????{??
  • ????????delete?plist;??
  • ????}??
  • };??
  • //Blog:http://blog.csdn.net/zhanxinhang??
  • int?main()??
  • {??
  • App?myapp;??
  • myapp.run();??
  • system("pause");??
  • return?0;??
  • }?




  • :1、如何判斷一個字符串是對稱的?如a,aa,aba。? ?

    ? ? ? ? ?2、如何利用2函數找出一個字符串中的所有對稱子串?


    分析

    ? ? ? ??看第一個問題判斷字符串對稱,有以下兩種方法。

    ? ? ? ? 方法一、使迭代器p1指向頭,p2指向尾。使p1,p2相對而行(—> | <),每次比較p1,p2是否相等,直到它們相遇。

    ? ? ? ??方法二、使p1、p2指向中間的一個元素(如果字符串長度為偶數的話就指向中間兩個相鄰的元素),使它們相向而行(<— |—>),每次比較p1,p2是否相等。直到它們一個指向頭一個指向尾便結束。??

    (可以看出方法1明顯好于方法2)

    ? ? ? ??在看第二個問題打印所有的對稱子串,判斷對稱子串的問題我們似乎已經解決,且有以上兩種方法,針對現在的情況是否兩種都合適呢,確切的說不是。如果是方法一,請想象一下,如果要p1,p2一個指向子串的頭一個指向子串的尾,那么至少要兩層循環一層控制p1一層控制p2,還有一層循環用于判斷子串是否對稱,也就是說總共需要三層嵌套循環,時間復雜度指數為3。而如果選擇方法二呢? 兩層循環就能實現,不過要適應現在這種情況需要做些修改,就是針對偶數長度的子串進行一次遍歷,再針對奇數長度的子串進行一次遍歷,也就是兩層嵌套循環中內層有兩次循環,時間復雜度指數為2。詳情且看代碼。


    實現加測試代碼:

    [cpp] view plaincopy
  • /**?
  • Author:花心龜?
  • Blog:http://blog.csdn.net/zhanxinhang?
  • **/??
  • ??
  • #include?<iostream>??
  • #include?<cstdlib>??
  • #include?<ctime>??
  • using?namespace?std;??
  • class?App??
  • {??
  • ????typedef?string::iterator?Iter_t;??
  • ??
  • ????string?m_str;??
  • ????void?print(Iter_t?p1,?Iter_t?p2)?//打印從p1開始到p2結束的字符??
  • ????{??
  • ????????while(p1<=p2)??
  • ????????{??
  • ????????????cout<<*p1;??
  • ????????????p1++;??
  • ????????}??
  • ????????cout<<"?|?";??
  • ????}??
  • ????bool?isHuiwen1(Iter_t?start,Iter_t?end)?//法1判斷是否為對稱子串??
  • ????{??
  • ????????Iter_t?p1?=?start;??
  • ????????Iter_t?p2?=?end;??
  • ????????int?times?=?(distance(p1,p2)+1)?/?2;?//比較次數??
  • ????????while(times)??
  • ????????{??
  • ????????????if(*p1?!=?*p2)??
  • ????????????????return?false;??
  • ??
  • ????????????p1++;???
  • ????????????p2--;???
  • ????????????times--;??
  • ????????}??
  • ????????return?true;??
  • ????}??
  • ??
  • ????bool?isHuiwen2(Iter_t?mid_it)?//法2判斷是否為對稱子串??
  • ????{??
  • ????????Iter_t?p1,p2;??
  • ????????p1?=?p2?=?mid_it;??
  • ??
  • ????????while(p1>=m_str.begin()?&&?p2?<?m_str.end())???
  • ????????{?????????????
  • ????????????if(*p1?!=?*p2)???
  • ????????????????break;????
  • ????????????print(p1,p2);//打印從p1到p2的字符??
  • ????????????p1--,p2++;??
  • ????????}??
  • ??
  • ????????p1?=?p2?=?mid_it;??
  • ????????p2++;?//使p2向前移動一個位置,此時p1,p2分別指向中間兩個相鄰位置??
  • ????????while(p1>=m_str.begin()?&&?p2?<?m_str.end())????
  • ????????{??
  • ????????????if(*p1?!=?*p2)??
  • ????????????????return?false;??
  • ????????????print(p1,p2);//打印從p1到p2的字符??
  • ????????????p1--,p2++;??
  • ????????}??
  • ????????return?true;??
  • ????}??
  • ??
  • ????void?show_all_substr_of_huiwen1()?//法一打印所有對稱子串??
  • ????{??
  • ????????Iter_t?p2=m_str.end()-1;??
  • ????????Iter_t?p1?=?m_str.begin();??
  • ????????for(;p1!=m_str.end();p1++)??
  • ????????????for(p2=p1;p2!=m_str.end();p2++)??
  • ????????????{??
  • ????????????????if(isHuiwen1(p1,p2))??
  • ????????????????????print(p1,p2);??
  • ????????????}??
  • ????}??
  • ??
  • ????void?show_all_substr_of_huiwen2()??//法二打印所有對稱子串??
  • ????{??
  • ????????Iter_t?it?=?m_str.begin();??
  • ??
  • ????????for(;it!=m_str.end();it++)??
  • ????????{??
  • ????????????isHuiwen2(it);??
  • ????????}??
  • ????}??
  • ??
  • public:??
  • ??
  • ????void?run()??
  • ????{??
  • ????????m_str="abaaba";??
  • ????????cout<<"測試數據為:abaaba"<<endl;??
  • ????????show_all_substr_of_huiwen1();??
  • ????????cout<<endl;??
  • ????????show_all_substr_of_huiwen2();??
  • ????????cout<<endl;??
  • ??
  • ????????m_str="asdfie";??
  • ????????cout<<"測試數據為:asdfie"<<endl;??
  • ????????show_all_substr_of_huiwen1();??
  • ????????cout<<endl;??
  • ????????show_all_substr_of_huiwen2();??
  • ????????cout<<endl;??
  • ??
  • ????????m_str="aabaa";??
  • ????????cout<<"測試數據為:aabaa"<<endl;??
  • ????????show_all_substr_of_huiwen1();??
  • ????????cout<<endl;??
  • ????????show_all_substr_of_huiwen2();??
  • ????????cout<<endl;??
  • ??
  • ????????//時間比較//??
  • ????????m_str="this?is?a?string?for?testing.?aabaa?alskjdfkljasdjflasdflkajsldkjfsjlakjsdlfjwoekjlakjlsdkjflsajlkdjfowieuoriuq?aaddbb?sldjfalkjsdlfkjasldjflajsldfjalskdjflakjsdlfkjaslkdjflajsdlfkjaslkdjflkajsdlkjflkasjdlfjaklsjdkfljaklsdjfklsajdflkjslkdjflaskjdlfkjalsdjlfkajsldfkjlaksjdfljasldjflaskjdfkasjdflaksjdkfljaskldfjlaksjdfljasldjflaksjdkljfkalsjdlkfjasldjflasjdlfjasldjfklsajdfljaskldfjlsakjdflkasjdfkl?this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?is?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.this?is?a?string?for?testing.make?-k?make?-k?make?-k?make?-k?make?-k?make?-k?end";??
  • ??
  • ??
  • ????????time_t?start,record1;??
  • ??
  • ??
  • ????????cout<<"show?all?substr?of?huiwen?1:";??
  • ????????system("pause");??
  • ????????start?=?time(NULL);??????
  • ????????show_all_substr_of_huiwen1();??
  • ????????record1?=?time(NULL);??
  • ??
  • ????????cout<<endl;??
  • ????????cout<<"time:"<<record1-start;??
  • ????????cout<<endl;??
  • ??
  • ??
  • ????????cout<<"show?all?substr?of?huiwen?2:";??
  • ????????system("pause");??
  • ????????start?=?time(NULL);??
  • ????????show_all_substr_of_huiwen2();??
  • ????????record1?=?time(NULL);??
  • ??
  • ????????cout<<endl;??
  • ????????cout<<"time:"<<record1-start;??
  • ????????cout<<endl;??
  • ??
  • ????????cout<<"(可以看到打印速度明顯快于上一次)";??
  • ????}??
  • };??
  • ??
  • int?main()??
  • {??
  • ????App?myapp;??
  • ????myapp.run();??
  • ??
  • ????system("pause");??
  • ????return?0;??
  • }??

  • 測試結果:

    各測試數據下的一二行為打印出來的所有對稱字串。

    按下任意鍵后:

    以上是使用方法1打印出來的結果。

    按下任意鍵后:

    以上便是用方法2打印出來的結果。





    假設你有一個用1001個整數組成的數組,這些整數是任意排列的,但是你知道所有的整數都在1到1000(包括1000)之間。此外,除一個數字出現兩次外,其他所有數字只出現一次。假設你只能對這個數組做一次處理,用一種算法找出重復的那個數字。如果你在運算中使用了輔助的存儲方式,那么你能找到不用這種方式的算法嗎?

    分析

    方法一、若使用輔助的存儲方式,該選擇何種存儲方式呢?可使用hash的存儲方式,以1到1000作為hash表的索引,遍歷原數組,統計各數字出現的個數并存儲到以該數字為索引值的hash表中,若某個hash[x]的值為2則退出循環,x就是重復出現兩次的數字。時間復雜度最壞是O(n)。優點:高效率,缺點:消耗的內存空間過大。代碼如下:

    [cpp] view plaincopy
  • int?fun1(const?int?a[])??
  • {??
  • ??int?hash[1002]={0};??
  • ??int?x=0;??
  • ??for(int?i?=?0;?i<1001;?i++)??
  • ????{??
  • ??????if((++hash[a[i]])?==?2)??
  • ????????{??
  • ??????????x?=?a[i];??
  • ??????????break;??
  • ????????}??
  • ????}??
  • ??return?x;??
  • }??
  • 方法二、若不使用輔助的存儲方式呢?1001個整數組成的數組只有一個數字出現了兩次,且整數都在1到1000之間,所以可推得數組里面包含了1到1000之間的所有數字為[1,2,3……1000]和一個出現兩次的x為1到1000中的任一個數字。這樣就可以計算原數組里的所有數字之和S1和等差數列[1,2,3……1000]的和S2,再計算S1與S2之差,該差就是原數組中出現兩次的數字x。時間復雜度是固定的O(n)。優缺點:內存空間消耗幾乎沒有,但是效率要輸于使用hash表的存儲方式。代碼如下:

    [cpp] view plaincopy
  • int?fun2(const?int?a[])??
  • {??
  • ??int?s1=0,s2;??
  • ??s2?=?1001*1000/2;???
  • ??for(int?i?=?0;?i<1001;?i++)??
  • ????{??
  • ??????s1+=a[i];??
  • ????}??
  • ??return?s1-s2;??
  • }?





  • 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的每日微软面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产精品免费麻豆入口 | 97精品国产97久久久久久春色 | 日韩欧美一区二区不卡 | 婷婷综合 | 国产视频 亚洲视频 | 国产视频18 | 日韩免费在线一区 | 中文字幕中文字幕中文字幕 | 奇米影视777影音先锋 | 天天爽夜夜爽人人爽一区二区 | 一区二区精品在线观看 | 国产高清不卡一区二区三区 | 国产一区二区不卡在线 | 免费色视频网址 | 日本久久中文字幕 | 操操日日 | 国产成人久久77777精品 | 国产精品免费观看视频 | 久久免费视频99 | 免费看黄电影 | 中文字幕av电影下载 | 亚洲精品91天天久久人人 | 久久国产成人午夜av影院宅 | 久久嗨 | 国产在线毛片 | 91最新在线视频 | 六月丁香社区 | 日韩高清www | 91欧美日韩国产 | 日韩欧美视频免费看 | 久久精品香蕉 | 久久不射网站 | 黄网站www| 久久99精品久久久久久秒播蜜臀 | 亚洲人成人在线 | 日本久久久亚洲精品 | 丰满少妇一级片 | 在线观看国产区 | 亚洲视频axxx | 国产视频 久久久 | 婷婷国产在线 | 人人干天天射 | 亚州欧美视频 | 婷婷六月天天 | 在线免费av网 | 国产91九色视频 | 91视频免费国产 | 色在线亚洲 | 中国一区二区视频 | 国产精品黑丝在线观看 | 99久精品 | 久久久久久中文字幕 | 午夜在线免费观看 | 日韩av一区二区在线播放 | 精品国产一区二区三区蜜臀 | 婷婷中文字幕在线观看 | 欧美大码xxxx | 免费在线色| 久久久www成人免费精品 | 免费毛片一区二区三区久久久 | 丝袜美腿在线 | 亚洲精品乱码久久久久v最新版 | 91九色视频网站 | 一区二区三区动漫 | 91在线播放综合 | 91精品视频一区二区三区 | 国产日韩在线看 | 999久久久久久久久 69av视频在线观看 | 超级碰碰碰免费视频 | 精品在线免费视频 | 成人免费在线电影 | 国产+日韩欧美 | 99精品色 | 一区中文字幕电影 | 在线视频99| 九九九九精品 | 中文字幕高清在线 | 黄色大片日本免费大片 | 婷婷狠狠操| 午夜国产成人 | 一区二区三区精品在线 | 午夜在线国产 | 天天插狠狠干 | 91成人天堂久久成人 | 色综合久久综合中文综合网 | 国产国语在线 | 九精品 | 一级久久精品 | 免费高清男女打扑克视频 | 国精产品永久999 | 亚洲一区二区三区四区在线视频 | 久久久香蕉视频 | 亚洲久草网 | 久久精品久久久久电影 | 中文字幕资源网在线观看 | 99国产精品久久久久久久久久 | 国产区高清在线 | 国色天香第二季 | 91黄色免费看| 免费高清在线观看成人 | 免费看色网站 | 国产婷婷色 | 国产又粗又硬又爽视频 | 日韩黄在线观看 | 欧美精品在线观看免费 | 美女视频久久久 | 91成人网页版 | 日韩在线短视频 | 婷婷精品 | 伊人天天狠天天添日日拍 | 国产精品地址 | 国产精品永久在线 | 欧美一区二区免费在线观看 | 国产一区二区久久久久 | www.com久久| 在线视频你懂得 | 久久情爱 | 国产99精品 | 亚洲视频免费在线观看 | 亚州黄色一级 | 最新免费av在线 | 九九精品久久 | 97精产国品一二三产区在线 | 日本中文字幕系列 | 欧美乱大交 | 中文字幕乱码在线播放 | 色99色| 国产精品久久精品国产 | 久久久蜜桃一区二区 | 国产黄色片一级三级 | 日韩动态视频 | 96视频在线 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 亚洲视频大全 | 天天做天天爱夜夜爽 | 黄色特一级片 | 国产不卡在线观看 | 在线中文字幕播放 | 中文不卡视频 | 婷婷久久一区二区三区 | www.成人sex| 日本精品久久久久中文字幕5 | 久久久久久影视 | 天天色棕合合合合合合 | 麻豆久久久久久久 | 亚洲综合色av | 高清av中文字幕 | 国产精品高潮呻吟久久av无 | 伊人天天综合 | 国产丝袜 | 中文字幕大全 | 在线观看视频一区二区 | 色综合天天在线 | 精品久久久久久久久中文字幕 | 日本久久99 | 中文字幕免费不卡视频 | 中文字幕999| 97碰在线| 久久爱影视i | 欧美日韩成人一区 | 色天天久久 | 免费三级网 | 精品福利在线 | 最近2019中文免费高清视频观看www99 | 97超碰在线资源 | 在线视频第一页 | 免费黄色在线网站 | 国产婷婷视频在线 | 欧美99精品 | 亚洲精品色婷婷 | 在线观看日韩精品 | 国产 日韩 欧美 在线 | 天堂中文在线视频 | 国产成人在线免费观看 | 在线观看mv的中文字幕网站 | 中文在线免费一区三区 | 欧美动漫一区二区三区 | 一区二区三区电影大全 | 高清av中文字幕 | 久久精品久久精品久久39 | 国产精品黑丝在线观看 | 黄色福利网站 | 国产午夜三级一二三区 | 少妇视频一区 | 亚洲精品理论 | 日本三级中文字幕在线观看 | 456免费视频 | 精品国产伦一区二区三区观看体验 | 五月激情丁香婷婷 | 免费看一级特黄a大片 | 麻花传媒mv免费观看 | 国产精品igao视频网入口 | 亚洲男男gaygay无套 | 亚洲欧美视频在线播放 | 国产精品一区二区久久国产 | 亚洲影音先锋 | 国产精品毛片久久久久久 | 96超碰在线 | 久久高清国产 | 骄小bbw搡bbbb揉bbbb| 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | av一区二区三区在线播放 | 国产系列精品av | 91麻豆精品国产91久久久无限制版 | 高清免费av在线 | 国产精品久久久久久一区二区三区 | 国产在线2020 | 午夜少妇一区二区三区 | wwwww.国产 | 欧美aaa大片 | 日本特黄一级片 | 国产麻豆精品久久 | 久久国产精品色婷婷 | 最近乱久中文字幕 | 欧美少妇bbwhd | 亚洲激情综合网 | 国产91对白在线播 | 欧洲精品一区二区 | 国产一级免费观看视频 | 三级动态视频在线观看 | 免费又黄又爽的视频 | 欧美va天堂va视频va在线 | 麻豆视频在线观看免费 | 久久影院精品 | 久久久久久久久久久久久久免费看 | 97精品在线视频 | 看片黄网站 | 精品久久久久久久久中文字幕 | 国产一区二区久久久久 | 欧美日韩亚洲一 | 欧美日韩p片 | 日日干夜夜爱 | 亚洲三级在线播放 | 婷婷综合网 | 国产 日韩 在线 亚洲 字幕 中文 | 色婷婷福利视频 | 日韩视频一区二区 | 最近更新中文字幕 | 麻豆精品视频 | 四虎在线免费观看 | 91精品人成在线观看 | 1区2区视频 | 国产精品成人av在线 | 欧美资源 | 色婷婷六月天 | 国产福利91精品一区二区三区 | 激情图片久久 | 激情欧美一区二区三区 | 在线电影a | 国产精品自产拍在线观看桃花 | 国产在线视频资源 | 亚洲午夜电影网 | 天天色天天射综合网 | 91中文字幕在线视频 | 日韩黄色中文字幕 | 日韩三级在线观看 | 久久精品日产第一区二区三区乱码 | 福利网在线 | 国产精品久久久久av福利动漫 | 成年人在线观看网站 | a√天堂中文在线 | 丁香久久综合 | 四虎永久网站 | 国产在线一区二区三区播放 | 欧美精品久久久久久久久久丰满 | 久久精品小视频 | 久草在线视频国产 | 一级性生活片 | 日韩在线欧美在线 | 国内视频一区二区 | 国产黄色一级片 | 久久av中文字幕片 | 福利视频一区二区 | 久久精品黄色 | 全黄网站| 国产精品一区二区免费 | 国产亚洲一区 | 波多野结衣小视频 | 麻豆成人精品视频 | 成年人国产在线观看 | 亚洲精品国产麻豆 | 永久免费精品视频网站 | 婷婷综合国产 | 91香蕉视频720p | 国产又粗又硬又长又爽的视频 | 色综合天天天天做夜夜夜夜做 | 免费看成人片 | 久久国产精品一区二区三区 | 在线视频国产区 | 涩涩网站在线看 | 一区二区激情 | 成人超碰在线 | 国内久久久久久 | 日韩视频免费在线观看 | 久草国产视频 | 黄色av网站在线观看免费 | 国产免费久久av | 午夜丰满寂寞少妇精品 | 亚洲一区网 | 国产精品久久电影网 | 日韩精品欧美专区 | 欧洲亚洲精品 | 99热在线观看 | 欧美精品一区在线发布 | 天天综合网久久综合网 | 日韩影片在线观看 | 91精品国产乱码久久桃 | 亚洲撸撸 | 日韩一级电影在线观看 | 在线91av | 一区二区精品在线 | 国产一级片一区二区三区 | 最近中文字幕mv免费高清在线 | 日本久久电影网 | 久久久午夜精品理论片中文字幕 | 中文字幕一区二区三区四区视频 | 在线视频 国产 日韩 | 国产精品视频在线观看 | 中文字幕亚洲综合久久五月天色无吗'' | 日韩艹| 成人亚洲精品久久久久 | 99这里只有精品视频 | 最近最新中文字幕视频 | 欧美一级性生活片 | 麻豆视传媒官网免费观看 | 国产精品自拍在线 | 视频在线一区 | 久久尤物电影视频在线观看 | 色噜噜日韩精品一区二区三区视频 | 91精品国产三级a在线观看 | 91aaa在线观看 | 婷婷色 亚洲 | 国产理论片在线观看 | 2023年中文无字幕文字 | 人人爽人人干 | 99色在线观看 | 人人澡人人添人人爽一区二区 | 欧美日韩国产在线一区 | 人人干人人艹 | 九九热精品视频在线播放 | 久久综合五月婷婷 | 色综合网| 国产一级片视频 | 91久久精品日日躁夜夜躁国产 | 免费网站黄色 | 精品国产伦一区二区三区免费 | 国产精久久久久久妇女av | 亚洲国产午夜精品 | 国产99在线 | 国产免费黄色 | 六月激情久久 | 欧美久久久久久久久久久 | 国产资源在线视频 | 久久久精品| www.狠狠操.com | 激情久久久久久久久久久久久久久久 | 国产精品白浆 | 91在线视频观看免费 | 日本三级人妇 | 国产精品日韩久久久久 | www五月天婷婷 | 91九色在线播放 | 亚洲国产中文字幕 | 91看片看淫黄大片 | 五月激情站 | 色婷婷福利 | 在线观影网站 | 丁香在线观看完整电影视频 | 国产精品久久久久av | 中文字幕av免费观看 | 日韩动态视频 | 在线电影 一区 | 久久综合加勒比 | 中文字幕免费高清av | 国产xxxx做受性欧美88 | 在线播放精品一区二区三区 | 91成人区| 国产九色视频在线观看 | 精品在线观看一区二区 | 国产精品一区二区精品视频免费看 | av一级久久 | 国产视频欧美视频 | 国产不卡av在线 | 欧美成人91| 9992tv成人免费看片 | 国产高清不卡 | 国产粉嫩在线观看 | 天天做日日爱夜夜爽 | 国产久草在线 | 日本久久综合网 | 久草爱视频 | 在线看国产 | 久久久久久久久国产 | 国产精品免费在线播放 | 日韩午夜视频在线观看 | 亚洲在线a | 麻豆小视频在线观看 | 欧美久久久久久久久 | 欧美成人xxxxx| 日韩在线一二三区 | 日韩一区二区三区视频在线 | 国产精品久久久久久一区二区 | 毛片一区二区 | 国产日本在线观看 | 九九热在线精品视频 | 成人av一区二区兰花在线播放 | 成人在线观看日韩 | 亚洲天天看 | 丰满少妇对白在线偷拍 | 日韩精品视频在线观看网址 | 中文字幕超清在线免费 | 天天操天天射天天插 | 亚洲国产精品推荐 | 亚洲精品小视频在线观看 | 国产精品专区在线 | 91超碰免费在线 | 久久不卡免费视频 | 久久久久在线观看 | 日韩精品一区二区三区中文字幕 | 人人玩人人添人人澡超碰 | 亚洲精品男人的天堂 | 在线国产欧美 | 欧美精品一级视频 | 色干干 | 九九热免费在线观看 | 久久国产精品免费观看 | 一区在线观看视频 | 日本一区二区三区免费观看 | 九九在线精品视频 | 91人人澡人人爽 | 天天草天天 | 国产成人久久精品一区二区三区 | 亚洲五月婷 | 免费大片黄在线 | 欧美日韩一区二区三区在线免费观看 | 久99精品| v片在线播放 | 天天操天天操天天操天天操天天操天天操 | 久久高清国产视频 | 亚洲午夜精品久久久久久久久 | 91日韩精品一区 | 91视频电影 | 在线电影 你懂得 | 久久免费视屏 | 国产成人在线免费观看 | 最近日本中文字幕 | 四虎在线永久免费观看 | 黄网站色欧美视频 | 免费在线a| 天天草综合网 | 视频在线91 | 99精品久久精品一区二区 | 99在线观看免费视频精品观看 | 成人小电影在线看 | 综合网在线视频 | 国产99久久久国产 | 久久国语| 狠狠的干狠狠的操 | 综合网色 | 精品你懂的| 久久久精品久久日韩一区综合 | 97电影院网| 国产高清成人在线 | 99热最新| 国产日韩亚洲 | 国产三级国产精品国产专区50 | 成人午夜av电影 | 亚洲精品久久久久久中文传媒 | 成人在线观看日韩 | av天天澡天天爽天天av | 日本特黄一级 | 日韩大片免费观看 | 久久成人免费 | 国产精品第7页 | 色噜噜狠狠色综合中国 | 免费人人干| 午夜精品视频一区二区三区在线看 | 青春草免费在线视频 | 日韩精品一区二区三区电影 | 日韩一级成人av | 久草精品视频在线观看 | 午夜10000 | 欧美作爱视频 | www.激情五月.com | 精品字幕在线 | 国产视频一区在线播放 | 久操久 | 亚洲精品国产拍在线 | 最新av观看| 福利视频导航网址 | 久久高清毛片 | 99久久久国产免费 | 麻豆传媒视频在线免费观看 | 六月久久婷婷 | 日韩综合在线观看 | 亚洲伊人天堂 | 日韩视频精品在线 | 波多在线视频 | 超碰97在线资源站 | 在线视频 一区二区 | 三级视频国产 | 久久免费在线视频 | 国产最新网站 | 亚洲涩涩网 | 国产成人av电影在线 | 91在线欧美 | 波多野结衣在线视频一区 | 99c视频高清免费观看 | 日本激情视频中文字幕 | 天天操操操操操操 | 在线有码中文字幕 | 欧美日一级片 | 午夜精品久久久久久久99无限制 | 人人射人人爱 | 深爱五月激情网 | 四虎免费av| 亚洲精选国产 | 日韩av进入| 免费激情在线电影 | 欧美午夜a| 国产 日韩 中文字幕 | 97在线影院| 久精品视频 | 午夜视频免费在线观看 | 日韩电影一区二区在线 | 摸bbb搡bbb搡bbbb | 国产成人精品网站 | 天天操狠狠操网站 | 在线看片一区 | 欧美久久久久久久久久久久久 | 黄色免费网站大全 | 成人av手机在线 | 91在线视频免费播放 | 99久久影院 | 日色在线视频 | 91麻豆文化传媒在线观看 | 久久亚洲日本 | av资源免费在线观看 | 丁香 婷婷 激情 | 中文字幕国内精品 | 欧美日韩二区三区 | 欧美午夜精品久久久久 | 四虎成人av | 免费高清影视 | 99久久精品视频免费 | 日韩欧美69 | 久久成人国产精品 | 日韩视频一区二区三区在线播放免费观看 | 91精品一区二区在线观看 | 国产99久久精品一区二区300 | 中文字幕免费 | 亚洲激情久久 | 久久激情电影 | 久久精品高清视频 | 福利一区在线 | 久久免费a | 中文字幕在线观看视频免费 | 久久久久久美女 | 超碰在线色 | 婷婷色 亚洲 | 中文字幕免费在线 | 久久精品视频在线 | 日韩三区在线观看 | 精品乱码一区二区三四区 | 国产欧美最新羞羞视频在线观看 | 91精彩视频在线观看 | 狠狠地日 | avav片 | 国产小视频福利在线 | 精品麻豆 | 成人永久在线 | 成人国产网址 | 久久精品中文字幕 | 亚洲综合精品视频 | 亚洲综合小说电影qvod | 亚洲一级久久 | 欧美成年人在线视频 | 高清日韩一区二区 | 九九国产精品视频 | 91精品久久久久久久久久入口 | 视频在线91 | 色偷偷88888欧美精品久久 | 人人干干人人 | 中文字幕在线播放av | 激情久久影院 | 日日碰狠狠添天天爽超碰97久久 | 很黄很污的视频网站 | 黄色免费网站 | 973理论片235影院9 | 日韩在线第一区 | 人人爽人人av| 97超碰精品 | 欧美精品在线视频 | 日本h在线播放 | 伊人天天综合 | 精品视频www | 欧美日韩裸体免费视频 | 探花视频在线观看+在线播放 | 国产精品成人aaaaa网站 | 四川妇女搡bbbb搡bbbb搡 | 在线免费黄色片 | 97视频人人澡人人爽 | 免费www视频 | 国内小视频在线观看 | 91视频免费看片 | 中文字幕视频一区二区 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 一级片免费视频 | 91精品在线观看视频 | 亚洲在线精品 | 在线观看视频一区二区 | 最近中文字幕高清字幕在线视频 | 午夜12点 | 一区二区激情视频 | 97电影在线观看 | 亚洲国产一二三 | 91麻豆精品国产91久久久更新时间 | 欧美在线视频一区二区三区 | 亚洲成人第一区 | 91桃色在线观看视频 | 久久久亚洲精品 | 日韩xxxxxxxxx | 狠狠色狠狠色合久久伊人 | 夜色资源网 | 一区二区电影网 | 久久精品免视看 | 国产第一页在线观看 | 久久免费高清视频 | 四虎影视精品永久在线观看 | 国产精品1024| 国产精品6999成人免费视频 | 久久久精品电影 | 国产精品一区二区av日韩在线 | 国产天天综合 | 久操视频在线播放 | 91精品视频免费看 | 欧美乱大交 | 亚洲精品动漫久久久久 | 天天搞夜夜骑 | 久久这里只有精品久久 | 亚洲3级| 欧美一级欧美一级 | 日日摸日日碰 | 五月天色网站 | 亚洲另类视频在线观看 | 色www免费视频 | 国产美女在线精品免费观看 | 香蕉影视在线观看 | 丁香激情综合久久伊人久久 | 奇米影视8888 | 精品一区av | 99精品区 | 久久99中文字幕 | 成人在线视频论坛 | 色黄视频免费观看 | 日韩美女免费线视频 | 久久精品4 | 精品主播网红福利资源观看 | 麻豆久久精品 | 成人av亚洲 | 日韩久久精品一区二区 | www.五月天| 午夜久久网 | av线上看 | 又黄又爽又无遮挡免费的网站 | 2018亚洲男人天堂 | 97人人超 | 亚洲成人黄色在线 | 伊人看片| 中文字幕在线视频一区二区三区 | 黄色三级网站在线观看 | 色中色综合| 天天干天天射天天爽 | 能在线观看的日韩av | 国产精品女人久久久久久 | 韩日视频在线 | 天天曰天天 | 日本公妇在线观看 | 久久免费精品 | 久久66热这里只有精品 | 97超碰免费 | 日韩午夜三级 | 在线中文字幕一区二区 | 欧美精品久久天天躁 | 97视频免费观看2区 亚洲视屏 | 色婷婷精品大在线视频 | 国产成人精品亚洲a | 国产精品久久久久永久免费观看 | 国产精品第10页 | 欧美日韩在线精品 | 日韩在线观看一区二区三区 | 色婷五月| 国产在线视频导航 | 在线观看国产日韩 | 九九热精 | 91久久精品日日躁夜夜躁国产 | 国产视频在线观看一区二区 | 亚洲欧美婷婷六月色综合 | 中文字幕视频一区二区 | 国产精品免费在线 | 久久这里有精品 | 精品 激情 | 91久久丝袜国产露脸动漫 | 欧美精品在线观看免费 | 人人玩人人爽 | 日韩精品免费在线观看 | 91手机电影 | 一本一道波多野毛片中文在线 | 91九色在线观看 | 欧美日韩在线视频观看 | 亚洲高清视频在线观看免费 | 91精品国产99久久久久久久 | 成人午夜黄色 | 欧美视频国产视频 | 91在线麻豆 | 狠狠做深爱婷婷综合一区 | 在线天堂中文在线资源网 | 亚州精品天堂中文字幕 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 欧美在线观看视频一区二区三区 | 婷婷五天天在线视频 | 亚洲欧洲精品一区二区精品久久久 | 亚洲国产高清在线观看视频 | 天天操天天操天天操天天 | 精品国产欧美一区二区 | 夜夜澡人模人人添人人看 | 国产精品美女久久久久久久久久久 | 国产精品高清av | 伊人午夜 | www免费网站在线观看 | 免费观看91| 中文字幕久久精品 | 成人av一区二区在线观看 | 成人国产网址 | 国产精品美女免费 | 九九国产视频 | 亚洲黄色成人av | 成人网页在线免费观看 | 久99久精品视频免费观看 | 亚洲最大免费成人网 | 久久精品女人毛片国产 | 夜色成人av| 91手机在线看片 | 国产高清中文字幕 | 日韩艹 | 密桃av在线 | 成av人电影 | 国产精品久久久久久久午夜片 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 人人看人人做人人澡 | 二区三区精品 | 久久激情小说 | 国产一区免费视频 | 在线观看不卡视频 | 色免费在线 | 精品国产99国产精品 | 国产自偷自拍 | 久久精品视频在线免费观看 | 韩国av在线播放 | 亚洲精品videossex少妇 | 色噜噜日韩精品一区二区三区视频 | 成年人免费在线播放 | 国产日韩欧美视频在线观看 | 国产 一区二区三区 在线 | 成人精品国产免费网站 | 美女久久久久久久久久久 | 日韩中文字幕网站 | 少妇性bbb搡bbb爽爽爽欧美 | 黄色电影小说 | 麻豆一精品传二传媒短视频 | 99色国产 | 亚洲免费在线 | 国产手机视频在线播放 | 色美女在线 | 久99久精品 | 24小时日本在线www免费的 | 五月婷婷激情五月 | 欧美性生活一级片 | 日韩av有码在线 | 黄色字幕网 | 久久免费av电影 | 日韩不卡高清 | 成人免费观看电影 | 热久久国产精品 | 啪啪肉肉污av国网站 | 免费一级特黄录像 | 69av视频在线观看 | 日日精品| 国产精品原创在线 | 亚洲精品一区二区网址 | 婷婷久月 | 四虎影视成人精品国库在线观看 | av成人免费在线看 | 婷婷五月在线视频 | 婷婷色网视频在线播放 | 久久久免费观看完整版 | 欧美二区三区91 | 久久激情视频网 | 麻豆国产精品视频 | 日韩欧美一区二区三区视频 | 国产黄a三级三级 | 五月天电影免费在线观看一区 | 又黄又爽又湿又无遮挡的在线视频 | 成人日韩av| 亚洲成a人片在线www | 国产精品 国产精品 | 午夜免费福利片 | 欧美日韩免费在线观看视频 | 国产成年免费视频 | 久久天堂网站 | 国产精品69av | 在线免费精品视频 | 国产精品成人国产乱一区 | 91亚洲在线观看 | 亚洲精品视频在线播放 | 91麻豆福利 | 亚洲精品中文在线 | 欧美一级在线观看视频 | 天天看天天干天天操 | 成人中文字幕在线观看 | 精品国产网址 | 久久精品国产精品亚洲精品 | 婷婷综合av| 天天做天天爱天天综合网 | 久久艹在线观看 | 婷婷视频导航 | 玖玖爱国产在线 | 久操中文字幕在线观看 | av九九| 91亚洲免费| 狠狠狠狠狠操 | 波多野结衣一区 | 久草视频免费观 | va视频在线观看 | 国产小视频在线播放 | 精品夜夜嗨av一区二区三区 | 久久精品国产v日韩v亚洲 | 高清日韩一区二区 | 免费中文字幕在线观看 | 超碰人人超 | 久久精品资源 | 91精品电影 | 日韩理论在线 | 不卡日韩av| 久久亚洲影视 | 国产成人精品女人久久久 | 天天操天天操天天操天天操 | 天天爽夜夜操 | 成人91在线 | 91看片一区二区三区 | 中文字幕在线乱 | 日日碰狠狠添天天爽超碰97久久 | 亚洲天堂自拍视频 | 激情五月激情综合网 | 免费特级黄色片 | 亚洲精品玖玖玖av在线看 | 久久精品网址 | 国产精成人品免费观看 | 欧美综合干 | 日日操网 | 亚洲国产午夜 | а天堂中文最新一区二区三区 | a级国产乱理伦片在线观看 亚洲3级 | 午夜私人影院 | 婷婷激情综合五月天 | 成人黄色在线 | 亚洲精品www | 97人人添人澡人人爽超碰动图 | 狠狠干狠狠久久 | 亚洲黄色av网址 | 一区二区三区日韩视频在线观看 | 国产午夜一级毛片 | 色在线视频 | 天天做日日爱夜夜爽 | 国产成年免费视频 | 91九色蝌蚪在线 | 久久久久久久久艹 | 黄色免费大全 | 中文字幕色网站 | 日韩av不卡在线观看 | 久久久免费观看完整版 | a视频免费看 | 丁香5月婷婷 | 九热精品| 毛片网站在线看 | av成人免费在线看 | 黄色网免费 | 久久久久久久久免费 | 九九爱免费视频 | 蜜桃视频在线观看一区 | 97超碰在线免费观看 | 国产裸体视频网站 | 亚洲视频2| 免费精品 | 久草在线视频首页 | 麻豆国产精品一区二区三区 | www·22com天天操| 国产精品入口a级 | 国产精品亚洲片在线播放 | 亚洲va欧美va人人爽春色影视 | a在线免费| 日日躁天天躁 | 久草视频精品 | 亚洲视频免费在线观看 | 91视频啪 | 在线免费观看不卡av | 亚洲欧美怡红院 | 免费在线观看不卡av | 丰满少妇在线观看资源站 | 91成人在线观看高潮 | 五月天婷婷在线播放 | 国产99自拍| 97超碰人人澡 | 美女久久网站 | 精品国产免费人成在线观看 | www在线免费观看 | 国产在线观看h | 插婷婷| 一区二区视频免费在线观看 | 欧美国产亚洲精品久久久8v | 黄色在线观看免费 | 极品久久久 | 亚洲精品美女在线观看播放 | 91精品麻豆 | 久热超碰| 亚洲精品在线免费 | 亚洲综合在线一区二区三区 | 91激情视频在线播放 | 成人免费xxx在线观看 | 亚洲不卡av一区二区三区 | 麻豆网站免费观看 | 一区二区三区在线免费播放 | 久草资源在线 | 亚洲最新av在线网址 | 狠狠色丁香婷婷综合久久片 | 日韩一区二区三 | 亚洲日本精品视频 | 69av视频在线 | 天天爽天天爽天天爽 | 亚洲精品在线免费看 | 国产1级视频 | 亚洲成人一二三 | 97超碰国产精品女人人人爽 | 伊人婷婷在线 | 色婷av| 亚洲情婷婷 | 日韩精品中文字幕在线不卡尤物 | 色是在线视频 | 在线成人中文字幕 | 最新日韩中文字幕 | 在线观看国产麻豆 | 久久久久北条麻妃免费看 | 最近更新好看的中文字幕 | 国产99久久久国产精品免费看 | 99久久久久成人国产免费 | 亚洲欧美一区二区三区孕妇写真 | 亚洲成人av一区 | 蜜臀一区二区三区精品免费视频 | 亚洲精品资源 | 国产美女视频免费 | 日韩免费电影在线观看 | av在线网站观看 | 成人免费在线看片 | 国产精品久久久久久一区二区 | 日韩欧美视频在线免费观看 | 国产精品久久电影网 | 深夜国产在线 | 国产在线观看地址 | 日韩网站在线免费观看 | 国产黄| 成人性生交大片免费观看网站 | av大全在线观看 | 午夜婷婷在线播放 | 2024av| 99视频国产在线 | 国产精品久久久久久麻豆一区 | 精品国产伦一区二区三区免费 | 日韩高清精品一区二区 | 成人网中文字幕 | 狠狠精品 | 九九久久精品视频 | 亚洲一级影院 | 成人免费观看a | 亚洲在线免费视频 | 天天射天天爱天天干 | 久久tv视频 | 97国产电影| 久久久黄色免费网站 | 开心激情综合网 | 91传媒在线播放 | 精品国产一区二区三区四区vr | 六月激情丁香 | 国产小视频你懂的 | 成人影音av | 国产亚洲视频在线观看 | 日韩一区正在播放 | 亚洲一区在线看 | 欧美性另类 |