浅析数据结构之广义表
来源:互联网 发布:linux ntp配置文件 编辑:程序博客网 时间:2024/06/05 18:49
- 广义表又称列表,是线性表的推广
- 一般线性的元素都是单个元素
- 广义表的元素既可以是单个元素也可以是广义表,又称原子和子表
- 当广义表非空时,称第一个元素为其表头,剩下的元素为其表尾,很显然,广义表的定义是递归的
- 由于广义表中的数据元素可以有不同结构,因此很难用顺序存储结构来表示,通常采用链式的存储结构来存储广义表,每个元素可用一个结点来表示,结点有两种结构,一种是原子结点一种是表结点
#include "stdio.h"typedef int ElemTag;typedef int Elemment;typedef struct GLNode{ ElemTag tag; union { Elemment data; //标志域,等于0表示原子,等于1表示子表 struct { struct GLNode *hp; //表头指针域 struct GLNode *tp; //表尾指针域 } ptr; }} GLNode;//取表头GLNode* GetHead(GLNode *L){ if(!L)return; if(L->tag==1) return (L->ptr).hp; if(L->tag==0) return L;}//取表尾GLNode* GetTail(GLNode *L){ if(!L)return; if(L->tag==1) return (L->ptr).tp; if(L->tag==0) return L;}//广义表初始化GLNode* InitGLNode(GLNode* L){ L=(GLNode*)malloc(sizeof(GLNode)); return L;}//创建带n个结点的广义表,每个结点都是一个一维数组GLNode* CeateGLNode(GLNode* L,Elemment p[3][5],int n){ int i,j; GLNode *p1,*p2,*h; L=InitGLNode(L); h=L; L->tag=1; for(i=0; i<n; i++) { p1=(GLNode*)malloc(sizeof(GLNode)); p1->tag=1; (L->ptr).hp=p1; p2=(GLNode*)malloc(sizeof(GLNode)); p2->tag=1; (L->ptr).tp=p2; L=p2; for(j=0; j<p[i][0]; j++) { p2=(GLNode*)malloc(sizeof(GLNode)); p2->tag=0; p2->data=p[i][j+1]; (p1->ptr).hp=p2; p2 =(GLNode*)malloc(sizeof(GLNode)); p2->tag=1; (p2->ptr).hp=0; (p1->ptr).tp=p2; p1=p2; } } return h;}//输出广义表void Input(GLNode *L){ int i=0; GLNode *p; p=L; while(p=GetTail(p)) { L=GetHead(L); i++; printf("输出第%d个结点 :",i); while(1) { if(!GetHead(L))break; printf("%d ",GetHead(L)->data); L=GetTail(L); } printf("\n"); L=p; }}int main(){ GLNode* L; int n=3; Elemment p[3][5]= {{3,1,2,3,0},{3,4,5,6,0},{3,7,8,9,0},{3,11,12,13,0}}; L =CeateGLNode(L,p,n); Input(L); return 0;}
1 0
- 浅析数据结构之广义表
- 数据结构之广义表
- 8.数据结构之广义表
- c++数据结构之广义表
- 数据结构之广义表模拟
- 数据结构之【数组和广义表】复习题
- 算法与数据结构之广义表
- 数据结构之数组和广义表
- 数据结构之广义表和二叉树
- 数据结构之数组和广义表
- 31. 数据结构笔记之三十一广义表
- 数据结构---->广义表
- 数据结构 广义表
- 数据结构广义表实验
- 数据结构--广义表
- 数据结构--广义表
- [数据结构复习]广义表
- 数据结构 - 广义表
- 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
- You are using pip version 8.1.1, however version 9.0.1 is available.
- leetcode--Happy Number
- h2内存型数据库离线开发配置
- 使用SQLite数据库存储数据
- 浅析数据结构之广义表
- 【NOIP2017提高组模拟12.10】幻魔皇
- 字符串分段(串)
- Mysql主从配置,实现读写分离
- 上传本地项目到git
- 获取命令行参数的各种变化
- win10 zlib编译
- 证明支配集问题是NP完全问题
- [51nod 1531]树上的博弈