當前位置:首頁 » 編程語言 » 數據結構答案C語言版

數據結構答案C語言版

發布時間: 2024-01-29 02:44:24

Ⅰ 數據結構 (c語言版)胡學綱 課後習題 答案謝謝了,大神幫忙啊

數據結構課程第一章部分習題解答 第一章 緒論 1-4.什麼是抽象數據類型?試用C++的類聲明定義「復數」的抽象數據類型。要求 (1) 在復數內部用浮點數定義它的實部和虛部。 (2) 實現3個構造函數:預設的構造函數沒有參數;第二個構造函數將雙精度浮點數賦給復數的實部,虛部置為0;第三個構造函數將兩個雙精度浮點數分別賦給復數的實部和虛部。 (3) 定義獲取和修改復數的實部和虛部,以及+、-、*、/等運算的成員函數。 (4) 定義重載的流函數來輸出一個復數。 【解答】 抽象數據類型通常是指由用戶定義,用以表示應用問題的數據模型。抽象數據類型由基本的數據類型構成,並包括一組相關的服務。 //在頭文件complex.h中定義的復數類 #ifndef _complex_h_ #define _complex_h_ #include class comlex { public: complex ( ){ Re = Im = 0; } //不帶參數的構造函數 complex ( double r ) { Re = r; Im = 0; } //只置實部的構造函數 complex ( double r, double i ) { Re = r; Im = i; } //分別置實部、虛部的構造函數 double getReal ( ) { return Re; } //取復數實部 double getImag ( ) { return Im; } //取復數虛部 void setReal ( double r ) { Re = r; } //修改復數實部 void setImag ( double i ) { Im = i; } //修改復數虛部 complex & operator = ( complex & ob) { Re = ob.Re; Im = ob.Im; } //復數賦值 complex & operator + ( complex & ob ); //重載函數:復數四則運算 complex & operator – ( complex & ob ); complex & operator * ( complex & ob ); complex & operator / ( complex & ob ); friend ostream & operator << ( ostream & os, complex & c ); //友元函數:重載<< private: double Re, Im; //復數的實部與虛部 }; #endif //復數類complex的相關服務的實現放在C++源文件complex.cpp中 #include #include #include 「complex.h」 complex & complex :: operator + ( complex & ob ) { //重載函數:復數加法運算。 complex * result = new complex ( Re + ob.Re, Im + ob.Im ); return *result; } complex & complex :: operator – ( complex & ob ) { //重載函數:復數減法運算 complex *result = new complex ( Re – ob.Re, Im – ob.Im ); return * result; } complex & complex :: operator * ( complex & ob ) { //重載函數:復數乘法運算 complex *result = new complex ( Re * ob.Re – Im * ob.Im, Im * ob.Re + Re * ob.Im ); return *result; } complex & complex :: operator / ( complex & ) { //重載函數:復數除法 查看更多答案>>

Ⅱ 嚴蔚敏數據結構題集(C語言版)實習題答案

/* 用鄰接矩陣表示的圖的prim演算法的源程序*/

#include<stdio.h>
#define MAXVEX 6

typedef char VexType;

typedef float AdjType;

typedef struct {
int n; /* 圖的頂點個數 */
/*VexType vexs[MAXVEX]; 頂點信息 */
AdjType arcs[MAXVEX][MAXVEX]; /* 邊信息 */
} GraphMatrix;

typedef struct{
int start_vex, stop_vex; /* 邊的起點和終點 */
AdjType weight; /* 邊的權 */
} Edge;

Edge mst[5];

#define MAX 1e+8

void prim(GraphMatrix * pgraph, Edge mst[]) {
int i, j, min, vx, vy;
float weight, minweight; Edge edge;

for (i = 0; i < pgraph->n-1; i++) {
mst[i].start_vex = 0;
mst[i].stop_vex = i+1;
mst[i].weight = pgraph->arcs[0][i+1];
}

for (i = 0; i < pgraph->n-1; i++) { /* 共n-1條邊 */
minweight = MAX; min = i;
for (j = i; j < pgraph->n-1; j++)/* 從所有邊(vx,vy)(vx∈U,vy∈V-U)中選出最短的邊 */
if(mst[j].weight < minweight) {
minweight = mst[j].weight;
min = j;
}

/* mst[min]是最短的邊(vx,vy)(vx∈U, vy∈V-U),將mst[min]加入最小生成樹 */
edge = mst[min];
mst[min] = mst[i];
mst[i] = edge;
vx = mst[i].stop_vex; /* vx為剛加入最小生成樹的頂點的下標 */

for(j = i+1; j < pgraph->n-1; j++) { /* 調整mst[i+1]到mst[n-1] */
vy=mst[j].stop_vex; weight = pgraph->arcs[vx][vy];
if (weight < mst[j].weight) {
mst[j].weight = weight;
mst[j].start_vex = vx;
}
}
}
}

GraphMatrix graph = {
6,
{{0,10,MAX,MAX,19,21},
{10,0,5,6,MAX,11},
{MAX,5,0,6,MAX,MAX},
{MAX,6,6,0,18,14},
{19,MAX,MAX,18,0,33},
{21,11,MAX,14,33,0}
}
};

int main(){
int i;
prim(&graph,mst);
for (i = 0; i < graph.n-1; i++)
printf("(%d %d %.0f)\n", mst[i].start_vex,
mst[i].stop_vex, mst[i].weight);
return 0;
}

熱點內容
歐文5的配置是什麼 發布:2025-01-22 21:30:23 瀏覽:108
日誌存儲資料庫 發布:2025-01-22 21:30:07 瀏覽:474
gulp上傳cdn 發布:2025-01-22 21:27:34 瀏覽:202
emule文件夾 發布:2025-01-22 21:23:23 瀏覽:980
s7e什麼時候推送安卓7 發布:2025-01-22 21:20:59 瀏覽:203
狐狸的清白腳本分析 發布:2025-01-22 21:19:59 瀏覽:182
如何破解仿射密碼 發布:2025-01-22 21:13:53 瀏覽:80
百度視頻存儲 發布:2025-01-22 21:13:11 瀏覽:168
發吧傳媒源碼 發布:2025-01-22 21:07:52 瀏覽:953
shell腳本調用sql腳本 發布:2025-01-22 20:53:51 瀏覽:428