數據是信息的載體。它能夠被計算機識別、存儲和加工處理,是電腦程式加工的"原料"。在數據結構中,數據的存儲結構一般分為線性結構和非線性結構。數據存儲表示法一般是指數據的存儲結構表示方法。一般為了表示數據之間的關係,會採用不同的表示法。
基本介紹
- 中文名:數據存儲表示法
- 外文名:Data Storage Representation
- 學科:計算機科學
- 定義:數據的存儲結構表示方法
- 目的:數據之間的關係
- 領域:數據結構
簡介
數據存儲結構
數據結構
分類
線性結構的邏輯特徵是:若結構是非空集,則有且僅有一個開始結點和一個終端結點,並且所有結點都最多只有一個直接前趨和一個直接後繼。
線性表是一個典型的線性結構。棧、佇列、串等都是線性結構。
非線性結構的邏輯特徵是:一個結點可能有多個直接前趨和直接後繼。數組、廣義表、樹和圖等數據結構都是非線性結構。
樹的表示法
圖的表示法
#define MAX_VERTEX_NUM 20typedef struct graph{Elemtypeelem [MAX_VERTEX_NUM][MAX_VERTEX_NUM];int n;}Graph;
#defineMAX_VERTEX_NUM30//最大頂點個數typestructEdgeLinklist{//邊結點intadjvex;structEdgeLinklist*next;}EdgeLinklist;typedefstructVexLinklist{//頂點結點Elemtypeelem;EdgeLinklist*firstedge;}VexLinklist,AdjList[MAX_VERTEX_NUM];
voidCreate_adj(AdjListadj,intn){for(i=0;i<n;i++){//初始化頂點數組 scanf(&adj.elem);adj.firstedge=NULL;}scanf(&i,&j);//輸入弧 while(i){s=(EdgeLinklist*)malloc(sizeof(EdgeLinklist));//創建新的弧結點s->adgvex=j-1;s->next=adj[i-1].firstedge;//將新的弧結點插入到相應的位置adj[i-1].firstegde=s; scanf(&i,&j);//輸入下一條弧}}
voidCreate_adj(AdjListadj,intn){for(i=0;i<n;i++){//初始化鄰接表scanf(&adj.elem);adj.firstedge=NULL;}scanf(&i,&j);//輸入邊 while(i){s1=(EdgeLinklist*)malloc(sizeof(EdgeLinklist));s1->adgvex=j-1;s2=(EdgeLinklist*)malloc(sizeof(EdgeLinklist));s2->adgvex=i-1;s1->next=adj[i-1].firstedge;adj[i-1].firstegde=s1;s2->next=adj[j-1].firstedge;adj[j-1].firstegde=s2; scanf(&i,&j);}}