日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构-线性相关代码

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构-线性相关代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.漢諾塔-遞歸問題

int i=1;//記錄步數 void move(int n,char from,char to) {printf("第%d步:將%d號盤子%c---->%c\n",i++,n,from,to); } void hanoi(int n,char from,char denpend_on,char to) { if (n==1) move(1,from,to);//只有一個盤子是直接將初塔上的盤子移動到目的地 else { hanoi(n-1,from,to,denpend_on); move(n,from,to); hanoi(n-1,denpend_on,from,to); }


2.已知一個不帶表頭節點的單鏈表中每個節點存放一個整數,并且節點數不少于2。設計一個算法,判斷該鏈表中從第2個節點開始(包含第2個節點)的每個元素值是否等于其序號的平方減去其前驅結點的值,滿足則返回true,否則返回false。
bool judge(LinkList head){LNode *q=head;LNode *p=head->next;int num=2;while(p){if(p->data!=num*num*q->data)return false;q=p;p=p->next;}return true; }
3.假定數組A[0,…,n-1]中有多個零元素,試寫一個函數,將A中所有的非零元素依次移到數組A的前端,要求空間復雜度為O(1)。

void MoveNumZeroLeft(int A[],int n){int i=0,j=n-1;while(i<j){while(A[i]!=0&&i<j) i++;while(A[j]==0&&i<j) j--;if(i<j) Swap(A[i],A[j]);} }

4.已知一個帶頭節點的單鏈表,設該鏈表只給出了頭指針head。在不改變鏈表結構的前提下,設計一個盡可能高效的算法,查找鏈表中倒數第K個位置上的節點。若查找成功,則返回該節點中元素值,否則返回-1。(只能通過一次遍歷)。

LNode * FindKthToTail(LinkList L,int k){LNode *p=L->head;LNode *q=NULL;for(int i=0;i<k-1;i++)p=p->next;q=L->head;while(q->next){p=p->next;q=q->next;}return q; }
5.將n(n>1)個整數存放到一維數組R中,試設計一個在時間和空間上盡可能高效的算法,將R中保存的序列循環左移p(0<p<n)個位置,即將R中的數據由(X0,X1,…,Xn-1)變換成為(Xp,Xp+1,…,X0,X1,…,Xp-1)。

void Converse(int R[],int n,int p){ //R為數組,n為長度,p為要左循環多少個Reverse(R,0,p-1);Reverse(R,p,n-1);Reverse(R,0,n-1); } void Reverse(int R[],int from,int to){for(int i=0;i<(to-from+1)/2;i++)Swap(R[from+i],R[to-i]); }


6.編寫一個算法,將一個非負的十進制數N轉換為一個二進制數。

void DecToBin(int N){int i;Stack S;while(N!=0){i=N%2;N=N/2;Push(S,i);}while(IsEmpty(S))printf(“%d”,Pop(S)); }



總結

以上是生活随笔為你收集整理的数据结构-线性相关代码的全部內容,希望文章能夠幫你解決所遇到的問題。

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