《数据结构教程(李春葆主编 第五版)》第一章源代码 + 《数据结构》上机实验(第九章) —查找
生活随笔
收集整理的這篇文章主要介紹了
《数据结构教程(李春葆主编 第五版)》第一章源代码 + 《数据结构》上机实验(第九章) —查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計ー個算法,求ー元二次方程ax2+bx+c=0ax^2+bx+c=0ax2+bx+c=0的根。(P17 例1-5)
- 解:該算法的輸入為a、b和c,輸出為根的個數和兩個根,將a、b和c作為輸人型形參,采用函數的返回值表示根的個數,用兩個引用型形參x1和x2表示兩個根。
P22 例1-9
//【例1.9】的算法:分析遞歸算法的時間復雜度 #include <stdio.h> void fun(int a[],int n,int k) //數組a共有n個元素,執行時間為T1(n,k) {int i;if (k==n-1) for (i=0;i<n;i++) printf("%d\n",a[i]); //該語句執行次數為nelse{ for (i=k;i<n;i++) a[i]=a[i]+i*i; //該語句執行次數為n-kfun(a,n,k+1); //執行時間為T1(n,k+1)} }int main() {int a[10]={0};fun(a,10,0);return 1; }《數據結構》上機實驗(第九章) —查找
線性表中各結點的檢索概率不等時,可用如下策略提高順序檢索的效率:若找到指定的結點,則將該結點和其前驅結點(若存在)交換,使得經常被檢索的結點盡量位于表的前端。試設計在順序結構和鏈式結構的線性表上實現上述策略的順序檢索算法。
使用順序結構
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 = p->next; //當前結點的前驅結點(初始指向單鏈表中第二個結點)p = p->next->next; //當前結點(初始指向單鏈表中第三個結點)while (p != NULL){if (p->data != k) //當前結點的數據域與關鍵值不匹配{i++; //位序增加p = p->next; //三個指針同步后移q = q->next;r = r->next;}else //找到與關鍵值相等的數據域結點{r->next = p; //將當前結點與其前驅結點進行交換q->next = p->next;p->next = q;return i - 1; //返回交換后的位序}}return 0; //查找失敗,返回0} }運行結果
總結
以上是生活随笔為你收集整理的《数据结构教程(李春葆主编 第五版)》第一章源代码 + 《数据结构》上机实验(第九章) —查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做你的大玩具——轩小样儿的六一
- 下一篇: Microsoft SQL Server