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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

《数据结构教程(李春葆主编 第五版)》第一章源代码 + 《数据结构》上机实验(第九章) —查找

發(fā)布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《数据结构教程(李春葆主编 第五版)》第一章源代码 + 《数据结构》上机实验(第九章) —查找 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

設計ー個算法,求ー元二次方程ax2+bx+c=0ax^2+bx+c=0ax2+bx+c=0的根。(P17 例1-5)

  • 解:該算法的輸入為a、b和c,輸出為根的個數(shù)和兩個根,將a、b和c作為輸人型形參,采用函數(shù)的返回值表示根的個數(shù),用兩個引用型形參x1和x2表示兩個根。
//【例1.5】的算法:求一元二次方程的根 #include <stdio.h> #include <math.h> int solution(double a,double b,double c,double &x1,double &x2) { double d;d=b*b-4*a*c;if (d>0){ x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);return 2; //2個實根 }else if (d==0){ x1=(-b)/(2*a);return 1;//1個實根 } else return 0; //d<0的情況,不存在實根 }int main() {double a=2,b=-6,c=3;double x1,x2;int s=solution(a,b,c,x1,x2);if (s==1) printf("一個根:x=%lf\n",x1);else if (s==2) printf("兩個根:x1=%lf,x2=%lf\n",x1,x2);else printf("沒有根\n");return 1; }

P22 例1-9

//【例1.9】的算法:分析遞歸算法的時間復雜度 #include <stdio.h> void fun(int a[],int n,int k) //數(shù)組a共有n個元素,執(zhí)行時間為T1(n,k) {int i;if (k==n-1) for (i=0;i<n;i++) printf("%d\n",a[i]); //該語句執(zhí)行次數(shù)為nelse{ for (i=k;i<n;i++) a[i]=a[i]+i*i; //該語句執(zhí)行次數(shù)為n-kfun(a,n,k+1); //執(zhí)行時間為T1(n,k+1)} }int main() {int a[10]={0};fun(a,10,0);return 1; }

《數(shù)據(jù)結構》上機實驗(第九章) —查找

線性表中各結點的檢索概率不等時,可用如下策略提高順序檢索的效率:若找到指定的結點,則將該結點和其前驅(qū)結點(若存在)交換,使得經(jīng)常被檢索的結點盡量位于表的前端。試設計在順序結構和鏈式結構的線性表上實現(xiàn)上述策略的順序檢索算法。

使用順序結構

int SeqSrch(RecType R[], int n, KeyType k) {int i = 0, temp;while(i<n){if (R[i].key == k){temp = R[i].key;R[i].key = R[i - 1].key;R[i - 1].key = temp;return i;}else i++;}return 0; }

運行結果

使用鏈式結構

int SeqSrch(LinkList& L, int n, KeyType k) {int i = 1;LNode* p = L->next, * q, * r;if (p->data == k) return i; //第一個元素與關鍵值相等else if (p->next->data == k) //第二個元素與關鍵值相等{q = p->next;L->next = q;p = q->next;q->next = p;return i;}else //其他情況{i = 3; //位序從3開始r = p; //當前結點的前驅(qū)結點的前驅(qū)結點(初始指向單鏈表中第一個結點)q = p->next; //當前結點的前驅(qū)結點(初始指向單鏈表中第二個結點)p = p->next->next; //當前結點(初始指向單鏈表中第三個結點)while (p != NULL){if (p->data != k) //當前結點的數(shù)據(jù)域與關鍵值不匹配{i++; //位序增加p = p->next; //三個指針同步后移q = q->next;r = r->next;}else //找到與關鍵值相等的數(shù)據(jù)域結點{r->next = p; //將當前結點與其前驅(qū)結點進行交換q->next = p->next;p->next = q;return i - 1; //返回交換后的位序}}return 0; //查找失敗,返回0} }

運行結果

總結

以上是生活随笔為你收集整理的《数据结构教程(李春葆主编 第五版)》第一章源代码 + 《数据结构》上机实验(第九章) —查找的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。