数据结构 树的链式存储(三叉表示法)

//树的链式存储--三叉表示法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct _TreeNode{
    //数据域
    int data;
    //指针域
    struct _TreeNode * leftchild;//左孩子指针
    struct _TreeNode * rightchild;//右孩子指针
    struct _TreeNode * parent;//双亲指针---比二叉表示法多了一个双亲指针
}TreeNode, *TreeNodePointer;

void Test1(){
    //定义结构体对象
    TreeNode t1, t2, t3, t4, t5;
    //填充数据域
    t1.data = 1;
    t2.data = 2;
    t3.data = 3;
    t4.data = 4;
    t5.data = 5;

    //建立树之间的关系
    //t1是根节点  t2是t1的左孩子
    t1.leftchild = &t2;
    t1.rightchild = NULL;
    t1.parent = NULL;

    // t3是t2的左孩子
    t2.leftchild = &t3;
    t2.rightchild = NULL;
    t2.parent = &t1;

    // t4是t2的左孩子
    t3.leftchild = &t4;
    t3.rightchild = NULL;
    t3.parent = &t2;

    // t5是t4的左孩子
    t4.leftchild = &t5;
    t4.rightchild = NULL;
    t4.parent = &t2;

    //t5没有孩子节点
    t5.leftchild = NULL;
    t5.rightchild = NULL;
    t5.parent = &t4;
}

void main(){

    system("pause");
}

时间: 2024-08-14 07:10:47

数据结构 树的链式存储(三叉表示法)的相关文章

数据结构 树的链式存储(双亲表示法)

//树的链式存储--双亲表示法 #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX_TREE_SIZE 100 typedef struct BPTNode { char data;//数据域 int parentPosition; //双亲的数组下标 char LRTag; //左右孩子标志域 }BPTNode; typedef struct BPTree { BPTNode node

数据结构 树的链式存储(二叉表示法)

//树的链式存储--二叉表示法 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct _TreeNode{ //数据域 int data; //指针域 struct _TreeNode * leftchild;//左孩子指针 struct _TreeNode * rightchild;//右孩子指针 }TreeNode, *TreeNodePointer; /* 以上语法定义了两个类

大话数据结构——线性表-链式存储之头插法创建链表

1 #include<iostream> 2 3 #include<time.h> 4 #include <stdlib.h> 5 6 using namespace std; 7 8 #define OK 1 9 #define TRUE 1 10 #define FALSE 0 11 #define ERROR 0 12 13 typedef int status;//返回的状态值 14 typedef int elemtype;//节点里数据的类型 15 16 /

数据结构-线性表-链式存储

由于顺序表的插入.删除操作需要移动大量的元素,影响了运行效率,由此引入了线性表的链式存储. 链式存储线性表时,不需要使用地址连续的存储单元,即它不要求逻辑上相邻的两个元素在物理位置上也相邻,它是通过“链”建立起数据元素之间的逻辑关系. 因此,对线性表的插入.删除不需要移动元素,而只需要修改指针. 线性表的链式存储又称为单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素.为了建立起数据元素之间的线性关系,对每个链表结点,除了存放元素自身的信息之外,还需要存放一个指向其后继的指针.单链表结

数据结构-队列-顺序链式存储

定义 队列(Queue):队列简称队,也是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除.向队列中插入元素称为入队或进队:删除元素称为出队或离队. 队列的操作 队列不可以读取对中间的元素. 队列的存储结构 顺序存储 链式存储 顺序存储 队列的顺序实现是指分配一块连续的存储单元存放队列中的元素,并附设两个指针front 和rear分别指示队头元素和队尾元素的位置. 设队头指针指向队头元素,队尾指针指向队尾 元素的下一个位置(也可以让rear指向队尾元素,front指向队头元

数据结构 - 栈的链式存储

栈的链式存储 1 栈的链式表示 栈的链式存储结构称为链栈,是运算受限的单链表.其插入和删除操作只能在表头位置上进行.因此,链栈没有必要像单链表那样附加头结点,栈顶指针top就是链表的头指针.图3-4是栈的链式存储表示形式. 链栈的结点类型说明如下: typedef struct Snode { ElemType data ; struct Snode *next ; } SNode, *Link_Stack ; 链栈基本操作的实现 2 链栈基本操作的实现 (1) 栈的初始化 SNode *Ini

数据结构之队列——链式存储结构(php代码实现)

<?php class QNode{     public  $data;     public  $next;     public function __construct($data){         $this->data=$data;         $this->next=null;     } } class LinkQueue{ //链队列包含头结点,实例化时,此队列为空     private $data;     private $next;     private

大话数据结构——线性表-链式存储之删除整链表

#include<iostream> #include<time.h> #include <stdlib.h> using namespace std; #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 typedef int status;//返回的状态值 typedef int elemtype;//节点里数据的类型 //数据结构 typedef struct Node { elemtype da

数据结构之栈——链式存储结构(php代码实现)

<?php /**     1. DestroyStack(): 栈的销毁     2. ClearStack(): 将栈置为空栈     3. StackEmpty(): 判断栈是否为空     4. StackLength(): 返回栈的长度     5. GetTop(): 取得栈顶的元素     6. Push(): 插入新的栈顶元素     7. Pop(): 删除栈顶元素     8. StackTraverse(): 遍历栈元素  */ class LNode{     publi