資料結構——樹的儲存結構孩子表示法
下面的程式就是下面這張表的實現:
程式實現
參考了《大話資料結構》中的定義:
typedef struct CTNode{//孩子結點
int child;
struct CTNode *next;
} *ChildPtr;
typedef struct{//表頭結構
char data;
ChildPtr firstchild;
}CTBox;
typedef struct{//樹結構
CTBox nodes[10]; //結點陣列
int r, n;//根的位置和結點數
}CTree;
完整程式碼:
#include <iostream>
using namespace std;
typedef struct CTNode{//孩子結點
int child;
struct CTNode *next;
} *ChildPtr;
typedef struct{//表頭結構
char data;
ChildPtr firstchild;
}CTBox;
typedef struct{//樹結構
CTBox nodes[10]; //結點陣列
int r, n;//根的位置和結點數
}CTree;
int main(){
CTree tree;
tree.r = 0;//根的位置是0
tree.n = 10 ;//10個結點
tree.nodes[0].data = 'A';//初始化表頭結點
tree.nodes[1].data = 'B';
tree.nodes[2].data = 'C';
tree.nodes[3].data = 'D';
tree.nodes[4].data = 'E';
tree.nodes[5].data = 'F';
tree.nodes[6].data = 'G';
tree.nodes[7].data = 'H';
tree.nodes[8].data = 'I';
tree.nodes[9].data = 'J' ;
ChildPtr child1 = new CTNode;//new孩子結點
ChildPtr child2 = new CTNode;
ChildPtr child3 = new CTNode;
ChildPtr child4 = new CTNode;
ChildPtr child5 = new CTNode;
ChildPtr child6 = new CTNode;
ChildPtr child7 = new CTNode;
ChildPtr child8 = new CTNode;
ChildPtr child9 = new CTNode;
tree.nodes[0].firstchild = child1;//表頭結點和孩子結點連線成表
child1->child = 1;
child1->next = child2;
child2->child = 2;
child2->next = nullptr;
tree.nodes[1].firstchild = child3;
child3->child = 3;
child3->next = nullptr;
tree.nodes[2].firstchild = child4;
child4->child = 4;
child4->next = child5;
child5->child = 5;
child5->next = nullptr;
tree.nodes[3].firstchild = child6;
child6->child = 6;
child6->next = child7;
child7->child = 7;
child7->next = child8;
child8->child = 8;
child8->next = nullptr;
tree.nodes[4].firstchild = child9;
child9->child = 9;
child9->next = nullptr;
tree.nodes[5].firstchild = nullptr;
tree.nodes[6].firstchild = nullptr;
tree.nodes[7].firstchild = nullptr;
tree.nodes[8].firstchild = nullptr;
tree.nodes[9].firstchild = nullptr;
cout << tree.nodes[0].firstchild->next->child<< endl;//輸出0的第二個孩子的值
cout << tree.nodes[3].data << endl;//輸出第四個表頭的data
delete child1;//刪除在堆上的分配空間
delete child2;
delete child3;
delete child4;
delete child5;
delete child6;
delete child7;
delete child8;
delete child9;
return 0;
}
相關推薦
資料結構-樹與森林-雙親表示法
以一組連續空間儲存結點,各結點附設指示器指示其雙親結點的位置(資料域加雙親下標域)。 首先是輔助巨集: #define OK 1 #define ERROR 0 #define TRUE 1 #d
資料結構——樹的儲存結構孩子表示法
下面的程式就是下面這張表的實現: 程式實現 參考了《大話資料結構》中的定義: typedef struct CTNode{//孩子結點 int child; struct CTNode *next; } *ChildPtr; type
樹的孩子表示法,樹的兄弟表示法,樹的儲存結構詳解,資料結構-樹的學習(2)
樹的儲存結構: 孩子表示法:把每個結點的孩子結點排列起來,以單鏈表作儲存結構,則n個結點有n個孩子連結串列,如果是葉子結點則此單鏈表為空。然後n個頭指標又組成一個線性表,採用順序儲存結構,存放進一個一維陣列中。 為此,設計兩種結點結構,一個是孩子連結串列的孩子結點 |
資料結構之通用樹(使用連結串列實現樹的儲存結構,雙親孩子表示法)
樹是一種非線性的資料結構,可以使用連結串列組織樹的各個節點,描述樹的一些常用操作。雙親孩子表示法是指每個結點都有一個指向其雙親的指標,每個結點都有若干個指向其孩子的指標。 標頭檔案: tree.h #ifndef __TREE_H__ #define __TREE_H__
樹的儲存結構之雙親孩子表示法
已知給出的樹結構如下圖: 用程式碼實現方式如下: /* 孩子表示法:浪費資源 雙親孩子表示法:陣列和連結串列的結合 */ /* 1.雙親孩子表示法定義一個數結構,運用結構體指標的程式設計方式 2
資料結構——樹的孩子表示法
#include <iostream> using namespace std; #define MAX_TREE_SIZE 100 typedef struct Cnode //孩子節點 { char child;
C語言資料結構——孩子表示法
孩子表示法:把每個結點的孩子結點排列起來,以單鏈表做儲存結構,則n個結點有n個孩子連結串列,如果是葉子結點則此單鏈表為空,然後n個頭指標又組成一個線性表,採用順序儲存結構,存放一個一維陣列。 #
資料結構 樹筆記-4 二叉樹儲存結構
既然上面提到了二叉樹的儲存結構,那麼我們進一步詳細介紹二叉樹的儲存結構 先複習一下 邏輯結構 與 物理結構: 邏輯結構講究的是資料之間的邏輯關係,分為:集合結構、線性結構、樹形結構、圖形結構 物理結構講究的是資料的儲存結構,分為:順序儲存結構、鏈式儲存結構
資料結構看書筆記(六)--樹的定義、抽象資料型別、儲存結構
樹:樹(Tree)是n(n>=0)個結點的有限集。n=0時稱為空樹,在任意一顆非空樹中:(1)有且只有一個特定的稱之為根(Root)的結點;(2)當n>1時,其餘結點可分為m(m>0)個互不相交的有限集T1、T2、……、Tm,其中每一個集合本身又是一棵樹,
詳解資料結構——圖之鄰接矩陣表示法
一、圖的建立 圖是表達“多對多”的關係的一種資料結構。 它由非空的有限頂點集合和有限邊集合組成。 1. 頂點集合常常由陣列表示。 陣列下標表示頂點位置。 陣列內容包含頂點資料,並且要新增判定是否被訪問過的標誌標量,為其餘操作提供引數。 其資料型別定義如下: struct
資料結構之圖的陣列表示法
圖( Graph )是 由頂點的有窮非空集合和頂點之間邊的集合組成,通常表示示為: G (V, E ) ,其中, G表示一個圖, V 是圖 G 中頂點的集合, E 是 圖 G 中邊的集合 。 圖狀結構是一種比樹形結構更復雜的非線性結構。在樹
JAVA基礎(61)---資料結構的基本概念和邏輯結構以及儲存結構
資料結構 本章的目的:對資料結構有一個大概的瞭解和認知 資料:能夠儲存
資料結構之邏輯結構與物理結構(儲存結構)
邏輯結構 邏輯結構分為四種類型:集合結構,線性結構,樹形結構,圖形結構。 所謂集合結構:表面意思,沒有什麼深刻意義,就是資料元素同屬一個集合,單個數據元素之間沒有任何關係。如下圖所示。  
二,影象資料與python儲存結構
# -*- coding: utf-8 -*- """ Created on Sat Nov 17 08:40:21 2018 @author: shenfangyuan """ # -*- coding:utf-8 -*- import tensorflow as tf import nu
Redis 各種資料型別的儲存結構和基本的使用場景
最近在看redis相關的資訊,在網際網路行業裡面,redis快取的應用相當的火熱,所以不管是實際的應用還是面試經常會用到。 redis的結構主要包含5種,我這邊總結了下,並做了一個思維導圖,先放在這裡吧,之後會詳細的說一下 相對應的xmind檔案和png檔案下載地址 https
c++的基本資料型別與儲存結構(學生筆記)
資料型別: 1.基本型別:整型(int,bool,enum),浮點型(float,double),字元型(char) 2.結構型別:陣列([ ]),結構(struct)聯合(union),類(class) 3.指標型別:(*) 4.空型別:(void) 整形根據示數範圍分為:短整形(sh
redis的資料型別和儲存結構
一,什麼是redis Redis(remote dictionary server)是一個基於KEY-VALUE的高效能的 儲存系統,通過提供多種鍵值資料型別來適應不同場景下的快取與儲存需求 。 二。redis的儲存結構 Redis比memached提供了更豐富
樹儲存結構
雙親表示法資料結構: typedef struct Node{ char data; int parent; }PTNode; typedef struct{ PTNode nodes[100]; int n; }PTree; 兄弟表示法資料結構 typedef struct
[樹] 6.66 雙親表示法PTree 轉 孩子兄弟表示式CSTree
題目來源:嚴蔚敏《資料結構》C語言版本習題冊 6.66 【題目】6.66 假設有n個結點的樹T採用了雙親表示法,寫出由此建立樹的孩子-兄弟連結串列的演算法。 【答案】 /*--------------------------------- |6.66 雙親
實驗周代碼(迷宮+完全二叉樹儲存結構轉換)
題目4:迷宮問題 具體設計要求: 將迷宮的左上角作為入口,右下角作為出口,對任意設定的迷宮,求出一條從入口到出口的通道,或得出沒有通路的結論。 (1)若從入口到出口的通道存在請顯示相應路徑,要求介面友好。 (2)要求資訊能保存於文字檔案中。 #include&l