GDPU 數據結構 天碼行空11

文章目錄

  • 數據結構實驗十一 圖的創建與存儲
    • 一、實驗目的
    • 二、實驗內容
    • 三、【實驗源代碼】
      • 🍻 CPP版
      • 🍻 c 語言版
      • 🍻 java版
    • 四、【實驗結果】
    • 五、【實驗總結】

數據結構實驗十一 圖的創建與存儲

一、實驗目的

1、 理解圖的存儲結構與基本操作;
2、 掌握圖的創建過程

二、實驗內容

1.請把下圖以鄰接矩陣的結構存儲,并打印輸出此鄰接矩陣。
圖的創建代碼參考教材例題.
提示:首先構建圖的邏輯模型,得出該圖的頂點集和邊集,調用相應的函數生成圖的鄰接矩陣,并打印出鄰接矩陣。
2.用鄰接表存儲上圖,并輸出鄰接表。(此題為選做)

三、【實驗源代碼】

🍻 CPP版

#include<iostream>
using namespace std;const int MAX_N = 6;
const int MAX_M = 6 * 5;int g[MAX_N][MAX_N]; // 鄰接矩陣
int h[MAX_N], e[MAX_M], w[MAX_M], ne[MAX_M]; // 鄰接表
int n = 6, m = 0, idx = 0; // n為節點數,m為邊數,idx為鄰接表中下一條邊的索引void add(int a, int b, int c)
{// 鄰接矩陣加邊g[a][b] = c;// 鄰接表加邊 (頭插法)e[idx] = b; // b表示當前邊的終點w[idx] = c; // c表示當前邊的權值ne[idx] = h[a]; // h[a]表示節點a的第一條邊在鄰接表中的位置,ne[idx]表示a節點的下一條邊在鄰接表中的位置h[a] = idx++; // 更新節點a的第一條邊的位置
}void init()
{// A B C D E F// 0 1 2 3 4 5// 初始化鄰接表的頭結點for (int i = 0; i < n; i++)h[i] = -1;// 加邊add(1, 0, 2);add(2, 1, 15);add(0, 2, 5);add(0, 3, 30);add(2, 5, 7);add(1, 4, 8);add(4, 3, 4);add(5, 3, 10);add(5, 4, 18);
}void print()
{// 輸出鄰接矩陣cout << "輸出鄰接矩陣:" << endl;cout << "   A  B  C  D  E  F" << endl;char c = 'A';for (int i = 0; i < n; i++){cout << c++ << "  ";for (int j = 0; j < n; j++)printf("%-2d ",g[i][j]);
//          cout << g[i][j] << " ";cout << endl;}// 輸出鄰接表cout << "\n	輸出鄰接表:" << endl;for (int i = 0; i < n; i++){cout << (char)('A' + i); // 輸出當前節點的名稱int x = h[i]; // 獲取當前節點的第一條邊在鄰接表中的位置while (x != -1){cout << " --[" << w[x] << "]--> " << (char)('A' + e[x]); // 輸出當前邊的權值和終點x = ne[x]; // 移動到下一條邊}cout << endl;}
}int main()
{n = 6; // 設置節點數為6char nodes[] = { 'A', 'B', 'C', 'D', 'E', 'F' }; // 節點名稱init(); // 初始化圖print(); // 輸出鄰接矩陣和鄰接表return 0;
}

🍻 c 語言版

#include <stdio.h>#define MAX_N 6
#define MAX_M (6 * 5)int g[MAX_N][MAX_N]; // 鄰接矩陣
int h[MAX_N], e[MAX_M], w[MAX_M], ne[MAX_M]; // 鄰接表
int n = 6, m = 0, idx = 0; // n為節點數,m為邊數,idx為鄰接表中下一條邊的索引void add(int a, int b, int c)
{// 鄰接矩陣加邊g[a][b] = c;// 鄰接表加邊 (頭插法)e[idx] = b; // b表示當前邊的終點w[idx] = c; // c表示當前邊的權值ne[idx] = h[a]; // h[a]表示節點a的第一條邊在鄰接表中的位置,ne[idx]表示a節點的下一條邊在鄰接表中的位置h[a] = idx++; // 更新節點a的第一條邊的位置
}void init()
{// A B C D E F// 0 1 2 3 4 5// 初始化鄰接表的頭結點for (int i = 0; i < n; i++)h[i] = -1;// 加邊add(1, 0, 2);add(2, 1, 15);add(0, 2, 5);add(0, 3, 30);add(2, 5, 7);add(1, 4, 8);add(4, 3, 4);add(5, 3, 10);add(5, 4, 18);
}void print()
{// 輸出鄰接矩陣printf("輸出鄰接矩陣:\n");printf("   A  B  C  D  E  F\n");char c = 'A';for (int i = 0; i < n; i++){printf("%c  ", c++);for (int j = 0; j < n; j++)printf("%-2d ", g[i][j]);printf("\n");}// 輸出鄰接表printf("\n	輸出鄰接表:\n");for (int i = 0; i < n; i++){printf("%c", (char)('A' + i)); // 輸出當前節點的名稱int x = h[i]; // 獲取當前節點的第一條邊在鄰接表中的位置while (x != -1){printf(" --[%d]--> %c", w[x], (char)('A' + e[x])); // 輸出當前邊的權值和終點x = ne[x]; // 移動到下一條邊}printf("\n");}
}int main()
{n = 6; // 設置節點數為6char nodes[] = { 'A', 'B', 'C', 'D', 'E', 'F' }; // 節點名稱init(); // 初始化圖print(); // 輸出鄰接矩陣和鄰接表return 0;
}

🍻 java版

package 數據結構實驗;public class 圖的創建和存儲
{static int[][] g;// (鄰接矩陣)static int n = 6, m = 6 * 5, idx = 0;static int[] h = new int[n];static int[] e = new int[m];static int[] w = new int[m];static int[] ne = new int[m];static void add(int a, int b, int c){
//		鄰接矩陣加邊g[a][b] = c;
//		鄰接表加邊 (頭插法)e[idx] = b;ne[idx] = h[a];w[idx] = c;h[a] = idx++;}static void init(){
//		A B C D E F
//		0 1 2 3 4 5
//		初始化鄰接表的頭結點for (int i = 0; i < n; i++)h[i] = -1;//		加邊add(1, 0, 2);add(2, 1, 15);add(0, 2, 5);add(0, 3, 30);add(2, 5, 7);add(1, 4, 8);add(4, 3, 4);add(5, 3, 10);add(5, 4, 18);}static void print(){
//		輸出鄰接矩陣System.out.println("輸出鄰接矩陣:");// 表頭System.out.println("   A  B  C  D  E  F");char c = 'A';for (int i = 0; i < n; i++){System.out.print(c++ + "  ");for (int j = 0; j < n; j++)System.out.printf("%-2d ", g[i][j]);System.out.println();}
//		輸出鄰接表System.out.println("\n輸出鄰接表:");for (int i = 0; i < n; i++){System.out.print((char) ('A' + i));int x = h[i];while (x != -1){System.out.print(" --" + w[x] + "--> " + (char) ('A' + e[x]));x = ne[x];}System.out.println();}}public static void main(String[] args){n = 6;char[] nodes = { 'A', 'B', 'C', 'D', 'E', 'F' };g = new int[n][n];init();print();}
}

四、【實驗結果】

在這里插入圖片描述

五、【實驗總結】

balabala

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166333.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nf_conntrack內核模塊常見問題

nf_conntrack內核模塊常見問題 問題描述排查步驟前置條件&#xff1a;啟用nf_conntrack內核模塊檢查nf_conntrack配置 解決辦法1:半數減少nf_conntrack buckets的值解決辦法2:加倍調大m.min_free_kbytes值解決辦法3:Linux社區權威答復-忽略告警 問題描述 內核報錯 falling bac…

什么是 npm —— 寫給初學者的編程教程

原文鏈接&#xff1a; 什么是 npm —— 寫給初學者的編程教程 自 2009 年以來&#xff0c;Node.js 一直席卷全球。成千上萬個系統基于 Node.js 構建&#xff0c;促使開發者在社區宣稱“JavaScript 正在吞噬軟件”。 Node 成功的主要因素之一是它廣受歡迎的軟件包管理器——np…

前k個高頻單詞(C++實現)

前k個高頻單詞 題目思路代碼代碼講解 題目 思路 通過統計字符串的出現次數&#xff0c;并根據出現次數和字典序對字符串進行排序&#xff0c;找出出現頻率最高的前k個字符串。使用一個自定義的仿函數作為排序的比較函數&#xff0c;通過map容器進行統計&#xff0c;然后將結果…

Linux:strace 簡介

文章目錄 1. 前言2. 什么是 strace ?3. 使用 strace3.1 追蹤指定進程3.1.1 通過程序名追蹤進程3.1.2 通過 進程 ID (PID) 追蹤程序3.1.3 追蹤 子進程 或 線程 3.2 系統調用情況統計3.3 追蹤過濾3.3.1 追蹤指定的系統調用集合3.3.2 追蹤對指定文件句柄集合操作的系統調用3.3.3 …

前端已死?看看我的秋招上岸歷程

背景 求職方向&#xff1a;web前端 技術棧&#xff1a;vue2、springboot&#xff08;學校開過課&#xff0c;簡單的學習過&#xff09; 實習經歷&#xff1a;兩段&#xff0c;但都是實訓類的&#xff0c;說白了就是類似培訓&#xff0c;每次面試官問起時我也會坦誠交代&…

關于鴻蒙網絡請求的問題

https://developer.huawei.com/consumer/cn/forum/topic/0204136145853212268?fid0102683795438680754 鴻蒙OS 代碼 import http from ohos.net.http;export const httpUtils (url: string, data: any) > {return new Promise((resolve, reject) > {let httpRequest …

創意設計與個性化定制:酒精壁爐的獨特之處

在當今家居裝飾的潮流中&#xff0c;人們越來越注重個性化和創意&#xff0c;而酒精壁爐正是在這一趨勢中嶄露頭角。它不僅成為家居的溫馨之選&#xff0c;更因其設計的靈活性而成為創意焦點&#xff0c;吸引了越來越多注重家居設計的人群。 酒精壁爐的設計靈活性為家居注入了新…

vue的package.json詳細說明

前言 package.json 文件是一個非常重要的文件,它用于存儲關于項目的元信息以及依賴項。在 Vue.js 項目中,package.json 文件描述了項目的名稱、版本、描述、作者、依賴項、腳本命令等信息。 說明 package.json 文件常見的 詳細說明: 1.名稱 (name): 項目的名稱。遵循反向…

工作流引擎架構設計

一個應用MIS的系統的架構離不開工作流引擎&#xff0c;具有流程引擎思維的架構人員設計系統的時候就有流程的思維&#xff0c;他區別于過程思維&#xff0c;過程思維開發出來的系統&#xff0c;用戶面對的是菜單、模塊。而流程思維設計出來的系統就是發起、待辦、在途、查詢、近…

SELinux refpolicy詳解(2)

接前一篇文章:SELinux refpolicy詳解(1) 本文內容引自: Documentation SELinuxProject/refpolicy Wiki GitHub 4. 入門指南 文檔是參考策略的主要目標之一。入門指南(https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted)提供了有關編寫參考策略模塊的…

關于vue3項目中 vite.config.js項目配置 多個請求地址代理配置

關于VUE3 vite.config.js文件配置相關 提示&#xff1a;本文記錄了我們項目中使用到了多個不同的接口請求前綴地址配置代理&#xff0c;如果有更好的優化方案歡迎大佬指點呀&#xff1a; 以下是我最近項目中的vite.config.js文件配置&#xff0c;由于剛開始vue3不久&#xff…

JS 類型轉換機制

這篇寫得不錯&#xff1a; 百度安全驗證 包括顯示轉換&#xff08;就是調用函數&#xff09;、隱式轉換&#xff08;運算符 - 時自動轉換成數字/字符串&#xff09; 注意到&#xff1a; abc-1 //NaN 非法字符轉換為數字 結果是NaN

LeetCode 1410. HTML 實體解析器:字符串匹配

【LetMeFly】1410.HTML 實體解析器&#xff1a;字符串匹配 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/html-entity-parser/ 「HTML 實體解析器」 是一種特殊的解析器&#xff0c;它將 HTML 代碼作為輸入&#xff0c;并用字符本身替換掉所有這些特殊的字符實體。…

【點云surface】基于多項式重建的平滑和法線估計

1 介紹 基于多項式重建的平滑和法線估計&#xff08;Smoothing and normal estimation based on polynomial reconstruction&#xff09;是一種常用的點云處理方法&#xff0c;用于平滑點云數據并估計每個點的法線信息。 該方法基于Moving Least Squares&#xff08;MLS&…

docker安裝nacos,實現和mysql容器的通信

1.下載nacos鏡像 docker pull nacos/nacos-server2. 啟動nacos 啟動命令如下&#xff1a; docker run -d -p 8848:8848 --name nacos \ -e JVM_XMS256m \ -e JVM_XMX256m \ -e MODEstandalone \ -e SPRING_DATASOURCE_PLATFORMmysql \ -e MYSQL_SERVICE_HOST192.168.131.223…

連接的原理(待修改)

搞數據庫?個避不開的概念就是Join&#xff0c;翻譯成中?就是連接。 相信很多?伙伴在初學連接的時候有些?臉懵逼&#xff0c;理解了連接的語義之后?可能不明?各個表中的記 錄到底是怎么連起來的&#xff0c;以?于在使?的時候常常陷?下邊兩種誤區&#xff1a; 誤區?&…

linux磁盤清理

目錄 排查過程1、查看磁盤占用情況2. 按照占用大小進行倒排-當前目錄及其子目錄3.當前目錄磁盤占用情況 清理命令 排查過程 1、查看磁盤占用情況 df -hdf -h 命令用于顯示磁盤空間的使用情況&#xff0c;以人類可讀的方式呈現&#xff0c;其中&#xff1a;df 是 “disk free”…

“AI就緒”新計劃,亞馬遜云科技到2025年向200萬人提供免費AI技能培訓

AI就緒&#xff08;AI Ready&#xff09;計劃 到2025年為全球200萬人提供 免費人工智能&#xff08;AI&#xff09;技能培訓和教育資源 亞馬遜云科技宣布啟動“AI就緒&#xff08;AI Ready&#xff09;”計劃&#xff0c;旨在到2025年為全球200萬人提供免費人工智能&#xff08…

Python與設計模式--適配器模式

7-Python與設計模式–適配器模式 一、外包人員系統兼容 假設某公司A與某公司B需要合作&#xff0c;公司A需要訪問公司B的人員信息&#xff0c;但公司A與公司B協議接口不同&#xff0c; 該如何處理&#xff1f;先將公司A和公司B針對各自的人員信息訪問系統封裝了對象接口。cla…

易點易動固定資產管理系統:全生命周期管理的理想選擇

在現代企業中&#xff0c;固定資產管理是一項至關重要的任務。為了確保企業的資產安全、提高資產利用率&#xff0c;全面管理固定資產的生命周期至關重要。易點易動固定資產管理系統為企業提供了一種全面的解決方案&#xff0c;實現了從固定資產申購、采購、入庫、領用、退庫、…