[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開始比對就會產生位置確認不準確的問題 把一...
複習 資料結構
因為要準備複試,想把專業課順一下,在此簡單記錄。主要按照本科課件複習。資料結構的概念 邏輯結構 邏輯結構可以分為線性結構和非線性結構 儲存結構 儲存結構包括順序 鏈結 索引和雜湊四種方法。鏈結儲存 通過在結點的儲存結構中附加指標欄位來儲存結點間的邏輯關係。資料結點由資料字段 存放結點本身資料 和指標...