資料結構操作複習

2021-09-24 13:49:41 字數 3524 閱讀 5275

[toc] 1.3 2.4 2.3 2.5

1.8刪除節點

int list::remove(int i)

while(k < i-1)

if(current == null || current->link == null)

del = current->link;

current->link = del->link;

delete del;

return 1;

}

2.1二叉樹的先序輸入

void binarytree::input(linknode*& p)

else

p = null; //不能省

}

2.3刪除跟為p的子樹

void binarytree::destroy(linknode *p)

}

2.4給定乙個subtree節點,從他開始找current節點的父節點

linknode* binarytree::parent(linknode* subtree, linknode* current)

linknode *p;

if((p = parent(subtree->leftchild, current)) != null) return p;

else return parent(subtree->rightchild, current);

}

2.5遞迴計算二叉樹的表示式

int binarytree::cal(linknode *p)

elseelse

coutint b;

if(p->rightchild->op>1 && p->rightchild->op < p->op)else

if(p->data=='+')else if(p->data=='-')else if(p->data=='*')else if(p->data=='/')

}}

2.6求二叉樹樹高

int binarytree::height(linknode *p)

}

2.7節點總個數

int binarytree::size(linknode* p)

}

2.8葉子節點個數

int binarytree::leaf(linknode* p)

}

2.10層次遍歷

void binarytree::levelorder()

}

2.11樹的前序遍歷(非遞迴)

void binarytree::preorder ()

//左子樹為空

}}

void matric::transpose(matric& b)}}

return -1;

}

5.1.2頂點 v 的某鄰接頂點 w 的v的下乙個鄰接頂點

int graphmtx::getnextneighbor (int v, int w)

return -1;

};

5.1.3插入頂點

bool graphmtx::insertvertex (const char vertex )

;

5.1.4刪除頂點

bool graphmtx::removevertex(int v)

//插入邊

numedges++; //邊的個數加1

return true;

}

5.1.6刪除邊

bool graphmtx::removeedge (int v1,int v2 )

if(edge[v1][v2] == maxweight || v1 == v2)

edge[v1][v2] = maxweight;

edge[v2][v1] = maxweight;

numedges--; //邊的個數減1

return true;

}

5.1.7bfs

void graphmtx::bfs(int v)

else

return -1;

}

5.2.2bfs!!!

void bfs()

p=p->link;}}

}

5.2.3 dfs

void dfs(int v)

p = p->link;

}}

5.2.4插入頂點

bool graphlnk::insertvertex(vertex* vertex)

5.2.5插入邊

bool graphlnk::insertedge(int v1, int v2)

if(p != null) return false;

p = new edge;

q = new edge;

p->dest = v2;

p->link = nodetable[v1].adj;

nodetable[v1].adj = p;

q->dest = v1;

q->link = nodetable[v2].adj;

nodetable[v2].adj = q;

numedges++;

return 1;

} return 0;

}

5.2.6 刪除邊

bool graphlnk::removeedge(int v1,int v2)

if(p != null)

else return false;

p = nodetable[v2].adj;

q = null;

s = p;

while(p->dest != v1)

if(p == s) nodetable[v2].adj = p->link;

else q->link = p->link;

delete p;

return true;

} return false;

}

資料結構複習

1 二叉遍歷 先序遍歷 先遍歷根結點,遍歷左子樹,遍歷右子樹 中序遍歷 先遍歷左子樹,遍歷根結點,遍歷右子樹 後序遍歷 先遍歷左子樹,遍歷右子樹,遍歷根結點 例項 遍歷a b c d e f 如 a e f b c d 先序遍歷 a b cd ef 中序遍歷 a b c d e f 後序遍歷 abc...

資料結構複習

個人理解 1 我認為關鍵是如何合理地將資料放到樹形結構裡 放的方式就是中序排序,即遍歷一遍順序與之相同 2 二叉搜尋樹類似於二分,可以與折半搜尋相比較,雖然思想相似,但是他們的時間效能有時不相同 例如 如果防止不當,42放到了左半枝,這樣就會導致如果輸入31開始比對就會產生位置確認不準確的問題 把一...

複習 資料結構

因為要準備複試,想把專業課順一下,在此簡單記錄。主要按照本科課件複習。資料結構的概念 邏輯結構 邏輯結構可以分為線性結構和非線性結構 儲存結構 儲存結構包括順序 鏈結 索引和雜湊四種方法。鏈結儲存 通過在結點的儲存結構中附加指標欄位來儲存結點間的邏輯關係。資料結點由資料字段 存放結點本身資料 和指標...