十字鍊錶的實現

2021-09-29 09:02:17 字數 1581 閱讀 3081

#include#include#includeusing namespace std;

typedef struct olist olist, *olpointer;

typedef struct olhead

col_head = (olpointer) malloc (col_create_size * sizeof(olist));

// 列頭預設指向空位址

for(int i = 0; i < col_create_size; i++)

row_max = row_create_size;

col_max = col_create_size;

// 初始資料全為零元素

data_num = 0; }

// 再增加increase_size行

void row_increase(const int increase_size) }

// 行增加increase_size列

void col_increase(const int increase_size) }

void insert(const int row, const int col, const int data)

//資料非零

if(row > row_max) row_increase(row-row_max); //資料所在行超過最大行

olpointer row_pointer = &row_head[row-1];

while(row_pointer->next_col && row_pointer->next_col->col <= col) row_pointer = row_pointer->next_col;

if(row_pointer->col == col)

olpointer new_data = (olpointer) malloc (sizeof(olist));

new_data->row = row;

new_data->col = col;

new_data->data = data;

new_data->next_col = row_pointer->next_col;

row_pointer->next_col = new_data;

if(col > col_max) col_increase(col-col_max); //資料所在列超過最大列

olpointer col_pointer = &col_head[col-1];

while(col_pointer->next_row && col_pointer->next_row->row <= row) col_pointer = col_pointer->next_row;

new_data->next_row = col_pointer->next_row;

col_pointer->next_row = new_data;

data_num++; //非零資料++

} int getdata(const int row, const int col)

} olhead;

int main()

十字鍊錶(Java)

對於有向圖來說,鄰接表是有缺陷的。關心了出度問題,想要了解入度情況就必須要遍歷整個圖才能知道。反之也一樣。那麼,這一節就介紹有向圖的一種儲存方法,它能將鄰接表和逆鄰接表結合起來 十字鍊錶。定義頂點表結點結構 vertex firstin firstout 其中,firstin表示入邊表頭指標,指向該...

十字鍊錶 Working routine

工作使艾奇快樂。勤奮的工作為國家直接貢獻了gdp,艾奇認為只要對國家有利,即使犧牲自己生命也心甘情願,絕不會因為自己可能受到禍害而躲開。當艾奇無聊的時候,她就會去工作,然而並不是每次工作都是輕鬆而愉悅的。當天艾奇又一次來到了學校,等待著她的是乙個有n 行m 列的巨大的矩陣和q個任務。對於每個任務,艾...

十字鍊錶(Orthogonal List)

十字鍊錶的特點 1 可以看成有向圖將鄰接表和逆鄰接表結合,每個結點有兩個指標域,分別指向入度邊鍊錶和出度邊鍊錶 2 時間複雜度與鄰接表相同 3 容易計算頂點的度 十字鍊錶的屬性 public static final int max vexnum num 20 最大頂點數 public static...