欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼總結(jié)

      時間:2019-05-11 23:51:20下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼總結(jié)》,但愿對你工作學(xué)習(xí)有幫助,當然你在寫寫幫文庫還可以找到更多《數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼總結(jié)》。

      第一篇:數(shù)據(jù)結(jié)構(gòu)經(jīng)典題目及c語言代碼總結(jié)

      《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計題目(程序?qū)崿F(xiàn)采用C語言)

      題目1:猴子選王(學(xué)時:3)

      一堆猴子都有編號,編號是1,2,3...m,這群猴子(m個)按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王。

      要求:m及n要求從鍵盤輸入,存儲方式采用向量及鏈表兩種方式實現(xiàn)該問題求解。

      //鏈表

      #include #include // 鏈表節(jié)點

      typedef struct _RingNode

      {

      int pos;

      struct _RingNode *next;}RingNode, *RingNodePtr;

      // 創(chuàng)建約瑟夫環(huán),pHead:鏈表頭指針,count:鏈表元素個數(shù) void CreateRing(RingNodePtr pHead, int count){

      RingNodePtr pCurr = NULL, pPrev = NULL;

      int i = 1;

      pPrev = pHead;

      while(--count > 0)

      {

      pCurr =(RingNodePtr)malloc(sizeof(RingNode));

      i++;

      pCurr->pos = i;

      pPrev->next = pCurr;

      pPrev = pCurr;

      }

      pCurr->next = pHead;// 構(gòu)成環(huán)狀鏈表 } void KickFromRing(RingNodePtr pHead, int n){

      RingNodePtr pCurr, pPrev;

      int i = 1;

      // 計數(shù)

      pCurr = pPrev = pHead;

      while(pCurr!= NULL)

      {

      if(i == n)

      {

      // 踢出環(huán)

      printf(“n%d”, pCurr->pos);

      // 顯示出圈循序

      pPrev->next = pCurr->next;

      free(pCurr);

      pCurr = pPrev->next;

      i = 1;

      }

      pPrev = pCurr;

      pCurr = pCurr->next;

      if(pPrev == pCurr)

      {

      // 最后一個

      printf(“nKing is %d”, pCurr->pos);

      // 顯示出圈循序

      free(pCurr);

      break;

      }

      i++;

      } }

      int main(){

      int n = 0, m = 0;

      RingNodePtr pHead = NULL;

      printf(“M(person count)= ”);

      scanf(“%d”, &m);

      printf(“N(out number)= ”);

      scanf(“%d”, &n);

      if(m <= 0 || n <= 0)

      {

      printf(“Input Errorn”);

      return 0;

      }

      // 建立鏈表

      pHead =(RingNodePtr)malloc(sizeof(RingNode));

      pHead->pos = 1;

      pHead->next = NULL;

      CreateRing(pHead, m);// 開始出圈

      printf(“nKick Order: ”);

      KickFromRing(pHead, n);

      printf(“n”);

      system(“pause”);

      return 0;}

      //數(shù)組做:

      #include #include #include

      void SelectKing(int MonkeyNum, int CallNum);

      void main(){

      int MonkeyNum;

      int CallNum;

      /* 輸入猴子的個數(shù) */

      printf(“Monkey Num = ”);

      scanf(“%d”, &MonkeyNum);

      /* 輸入M的值 */

      printf(“Call Num = ”);

      scanf(“%d”, &CallNum);

      SelectKing(MonkeyNum, CallNum);

      }

      void SelectKing(int MonkeyNum, int CallNum){

      int *Monkeys;// 申請一個數(shù)組,表示所有的猴子;

      int counter = 0;//計數(shù),當計數(shù)為猴子個數(shù)時表示選到最后一個猴子了;

      int position = 0;// 位置,數(shù)組的下標,輪流遍歷數(shù)組進行報數(shù);

      int token = 0;// 令牌,將報數(shù)時數(shù)到M的猴子砍掉;

      // 申請猴子個數(shù)大小的數(shù)組,把桌子擺上。

      Monkeys =(int *)malloc(sizeof(int)* MonkeyNum);

      if(NULL == Monkeys)

      {

      printf(“So many monkeys, system error.n”);

      return;

      }

      // 將數(shù)組的所有內(nèi)容初始化為0,被砍掉的猴子設(shè)置為1

      memset(Monkeys, 0, sizeof(int)*MonkeyNum);

      // 循環(huán),直到選中大王

      while(counter!= MonkeyNum)

      {

      // 如果這個位置的猴子之前沒有砍掉,那么報數(shù)有效

      if(Monkeys[position] == 0)

      {

      token++;// 成功報數(shù)一個,令牌+1,繼續(xù)報數(shù)直到等于M

      // 如果報數(shù)到M,那么將這個猴子砍去

      if(token == CallNum)

      {

      Monkeys[position] = 1;// 設(shè)置為1,表示砍去

      counter++;// 計數(shù)增加

      token = 0;// 設(shè)置為0,下次重新報數(shù)

      // 如果是最后一個猴子,把它的位置打印,這個就是大王了

      if(counter == MonkeyNum)

      {

      printf(“The king is the %d monkey.n”, position+1);

      }

      }

      }

      // 下一個猴子報數(shù)

      position =(position + 1)%MonkeyNum;

      }

      // 釋放內(nèi)存,開頭為所有猴子創(chuàng)建的桌子

      free(Monkeys);

      return;}

      題目2 :字符逆轉(zhuǎn)(學(xué)時:3)

      從鍵盤讀入一個字符串,把它存入一個鏈表(每個結(jié)點存儲1個字符),并按相反的次序?qū)⒆址敵龅斤@示屏。

      #include #include

      struct node {

      struct node *prev;

      char c;

      struct node *next;};struct node *input(struct node *top);int main(void){ struct node T,*top=&T,*bottom=&T,*p=NULL;T.prev=NULL;T.next=NULL;T.c='