1. 程式人生 > >資料結構——樹的儲存結構孩子表示法

資料結構——樹的儲存結構孩子表示法

下面的程式就是下面這張表的實現:
這裡寫圖片描述

程式實現
參考了《大話資料結構》中的定義:

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