From e01c04125970f7892cd3951372a0e12ab09c64b4 Mon Sep 17 00:00:00 2001 From: Launchcore Date: Thu, 6 Nov 2025 09:43:54 +0800 Subject: [PATCH] idk why these stuffs get stashed for so long and I didn't ever commit them --- .gitignore | 2 + Chapter1/Chapter1.sln | 32 +- Chapter1/{b/b.vcxproj => Chapter1.vcxproj} | 10 +- ...xproj.filters => Chapter1.vcxproj.filters} | 0 Chapter1/app1-4.cpp | 33 + Chapter1/app1-4/app1-4.cpp | 21 - Chapter1/b/b.cpp | 20 - .../2-5-ReverseLinkList.vcxproj | 138 +++++ .../2-5-ReverseLinkList.vcxproj.filters | 27 + Chapter2/2-5-ReverseLinkList/LinkList.h | 237 +++++++ .../2-5-ReverseLinkList/ReverseLinkList.cpp | 82 +++ Chapter2/Chapter2.sln | 10 + Chapter3/SqQueue/SqQueue.cpp | 2 +- Chapter3/SqQueue/SqQueue.h | 100 +++ Chapter3/SqQueue/SqQueue.vcxproj | 3 + Chapter3/SqQueue/SqQueue.vcxproj.filters | 5 + Chapter4/AddMatrix/AddMatrix.cpp | 203 ++++++ Chapter4/AddMatrix/AddMatrix.vcxproj | 135 ++++ .../AddMatrix/AddMatrix.vcxproj.filters | 2 +- Chapter4/Chapter4.sln | 41 ++ Chapter4/MatrixTrans/MatrixTrans.cpp | 130 ++++ Chapter4/MatrixTrans/MatrixTrans.vcxproj | 135 ++++ .../MatrixTrans/MatrixTrans.vcxproj.filters | 22 + Chapter5/BiTree/BiTree.vcxproj | 138 +++++ Chapter5/BiTree/BiTree.vcxproj.filters | 27 + Chapter5/BiTree/bitree.cpp | 129 ++++ Chapter5/BiTree/bitree.h | 421 +++++++++++++ Chapter5/Chapter5.sln | 51 ++ .../Huffmn/Huffmn.vcxproj | 14 +- Chapter5/Huffmn/Huffmn.vcxproj.filters | 22 + Chapter5/Huffmn/HumanTree.cpp | 165 +++++ Chapter5/ThrBiTree/ThrBiTree.cpp | 222 +++++++ Chapter5/ThrBiTree/ThrBiTree.vcxproj | 135 ++++ Chapter5/ThrBiTree/ThrBiTree.vcxproj.filters | 22 + Exercise/BiTreeExterned/BiTreeExterned.sln | 31 + .../BiTreeExterned/BiTreeExterned.vcxproj | 138 +++++ .../BiTreeExterned.vcxproj.filters | 27 + Exercise/BiTreeExterned/bitree.cpp | 136 ++++ Exercise/BiTreeExterned/bitree.h | 436 +++++++++++++ .../Del_e_in_Linear_List.sln | 0 .../Linked_List/LinkList.h | 0 .../Linked_List/Linked_List.vcxproj | 0 .../Linked_List/Linked_List.vcxproj.filters | 0 .../Linked_List/main.cpp | 0 .../Sequential_List/Sequential_List.vcxproj | 0 .../Sequential_List.vcxproj.filters | 0 .../Sequential_List/SqList.h | 0 .../Sequential_List/main.cpp | 0 .../Intersection_Union.sln | 0 .../Linked_List/LinkList.h | 0 .../Linked_List/Linked_List.vcxproj | 0 .../Linked_List/Linked_List.vcxproj.filters | 0 .../Intersection_Union}/Linked_List/main.cpp | 0 .../Sequential_List/Sequential_List.vcxproj | 0 .../Sequential_List.vcxproj.filters | 0 .../Sequential_List/SqList.h | 0 .../Sequential_List/main.cpp | 0 .../LinkListOperation}/LinkList.h | 0 .../LinkListOperation}/LinkListOperation.sln | 0 .../LinkListOperation.vcxproj | 0 .../LinkListOperation.vcxproj.filters | 0 .../LinkListOperation}/main.cpp | 0 Experiment/ExpReportTemplate.dotx | Bin 0 -> 16941 bytes Experiment/Experiment1/Report.docx | Bin 0 -> 35113 bytes .../Experiment1/Task1/Intersection_Union.sln | 41 ++ .../Experiment1/Task1/Linked_List/LinkList.h | 253 ++++++++ .../Task1/Linked_List/Linked_List.vcxproj | 138 +++++ .../Linked_List/Linked_List.vcxproj.filters | 27 + .../Experiment1/Task1/Linked_List/main.cpp | 80 +++ .../Sequential_List/Sequential_List.vcxproj | 138 +++++ .../Sequential_List.vcxproj.filters | 27 + .../Task1/Sequential_List/SqList.h | 175 ++++++ .../Task1/Sequential_List/main.cpp | 64 ++ Experiment/Experiment1/Task2/LinkList.h | 253 ++++++++ .../Experiment1/Task2/LinkListOperation.sln | 31 + .../Task2/LinkListOperation.vcxproj | 138 +++++ .../Task2/LinkListOperation.vcxproj.filters | 27 + Experiment/Experiment1/Task2/main.cpp | 76 +++ Experiment/Experiment2/Report.docx | Bin 0 -> 26010 bytes .../Experiment2/Task1/BracketsMatch.cpp | 54 ++ .../Experiment2/Task1/BracketsMatch.sln | 31 + .../Experiment2/Task1/BracketsMatch.vcxproj | 138 +++++ .../Task1/BracketsMatch.vcxproj.filters | 27 + Experiment/Experiment2/Task1/LinkStack.h | 92 +++ Experiment/Experiment2/Task2/Ferry.cpp | 77 +++ Experiment/Experiment2/Task2/Ferry.sln | 31 + Experiment/Experiment2/Task2/Ferry.vcxproj | 138 +++++ .../Experiment2/Task2/Ferry.vcxproj.filters | 27 + Experiment/Experiment2/Task2/LinkQueue.h | 129 ++++ Experiment/Experiment3/LeafNum.cpp | 53 ++ Experiment/Experiment3/LeafNum.sln | 31 + Experiment/Experiment3/LeafNum.vcxproj | 138 +++++ .../Experiment3/LeafNum.vcxproj.filters | 27 + Experiment/Experiment3/Report.docx | Bin 0 -> 21085 bytes Experiment/Experiment3/bitree.h | 424 +++++++++++++ Experiment/Experiment6/InsertSort.cpp | 62 ++ Experiment/Experiment6/InsertSort.sln | 31 + Experiment/Experiment6/InsertSort.vcxproj | 138 +++++ .../Experiment6/InsertSort.vcxproj.filters | 27 + Experiment/Experiment6/LinkList.h | 256 ++++++++ Experiment/Experiment6/Report.docx | Bin 0 -> 20405 bytes OrigFiles/1-绪/app1-4.cpp | 43 +- OrigFiles/1-绪/b.cpp | 20 - OrigFiles/2-1/2-1.cbp | 40 ++ OrigFiles/2-1/2-1.layout | 10 + .../2-2-LinkList-单链表 => 2-1}/LinkList.h | 36 +- OrigFiles/2-1/main.cpp | 151 +++++ .../LinkList-单链表/LinkList-单链表}/LinkList.cpp | 57 +- .../LinkList-单链表/LinkList-单链表/LinkList.h | 237 +++++++ .../2-线性表-源码/PolyAdd-稀疏多项式求和}/PolyAdd.cpp | 87 +-- .../ReverseLinkList-单链表逆置/LinkList.h | 237 +++++++ .../ReverseLinkList-单链表逆置/ReverseLinkList.cpp | 82 +++ .../2-线性表-源码/SqListApp-顺序表应用}/SqList.h | 19 +- .../SqListApp-顺序表应用/SqListApp.cpp | 172 ++++++ .../2-线性表/2-1-SqList-顺序表/SqList.cpp | 152 ----- OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.h | 175 ------ .../2-3-SqListApp-顺序表应用/SqListApp.cpp | 187 ------ .../3-特殊线性表 栈和队列/队列/LinkQueue.cpp | 98 +++ .../3-特殊线性表 栈和队列/队列/LinkQueue.h | 111 ++++ .../3-BracketsMatch(括号匹配)/BracketsMatch.cpp | 55 +- .../3-DancePartner(舞伴问题)/DancePartner.cpp | 158 ----- .../LinkQueue.cpp | 28 +- .../LinkQueue.h | 0 .../LinkStack.cpp | 23 +- .../LinkStack.h | 44 +- .../3-SqQueue(循环队列)/SqQueue.cpp | 126 ---- .../SqStack.cpp | 37 +- .../SqStack.h | 18 - .../3-ValExpression(表达式计算)/Expresion.cpp | 115 ++-- .../BracketsMatch(括号匹配)/BracketsMatch.cbp | 38 ++ .../BracketsMatch(括号匹配)/BracketsMatch.cpp | 107 ++++ .../BracketsMatch(括号匹配)/BracketsMatch.layout | 10 + .../DancePartner(舞伴问题)/DancePartner.cbp | 40 ++ .../DancePartner(舞伴问题)/DancePartner.cpp | 117 ++++ .../DancePartner(舞伴问题)/DancePartner.depend | 5 + .../DancePartner(舞伴问题)/DancePartner.layout | 10 + .../EvaluateExpression.cbp | 38 ++ .../EvaluateExpression.cpp | 147 +++++ .../EvaluateExpression.depend | 5 + .../EvaluateExpression.layout | 10 + .../LinkQueue(链队)/LinkQueue.cpp | 97 +++ .../LinkQueue.h | 15 - .../LinkStack(链栈)/LinkStack.cpp | 88 +++ .../LinkStack(链栈)/LinkStack.h | 94 +++ .../SqQueue(循环队列)/SqQueue.cpp | 111 ++++ .../SqQueue(循环队列)/SqQueue.h | 111 ++++ .../3-特殊线性表/SqStack(顺序栈)/SqStack.cpp | 95 +++ .../3-特殊线性表/SqStack(顺序栈)/SqStack.h | 89 +++ .../4_数组和矩阵/AddMatrix/AddMatrix.cpp | 202 ++++++ .../4_数组和矩阵/MatrixTrans/MatrixTrans.cpp | 130 ++++ .../5-树和二叉树/5-BiTree(二叉树)/SqQueue.h | 66 ++ .../5-树和二叉树/5-BiTree(二叉树)/SqStack.h | 76 +++ .../5-树和二叉树/5-BiTree(二叉树)/bitree.cpp | 131 ++++ .../5-树和二叉树/5-BiTree(二叉树)/bitree.h | 277 +++++++++ .../5-InThrBiTree(中序线索二叉树)/InThrBiTree.h | 128 ++++ .../5-InThrBiTree(中序线索二叉树)/ThrBiTree.cpp | 74 +++ .../5-树和二叉树/BiTree/SqQueue.h | 66 ++ .../5-树和二叉树/BiTree/SqStack.h | 76 +++ .../5-树和二叉树/BiTree/bitree.cpp | 131 ++++ .../5-树和二叉树/5-树和二叉树/BiTree/bitree.h | 267 ++++++++ .../5-树和二叉树/Huffmn/HumanTree.cpp | 164 +++++ .../5-树和二叉树/ThrBiTree/ThrBiTree.cpp | 221 +++++++ .../6-图/6-1-1-1-MGraph(无向图)/LinkQueue.h | 112 ++++ .../6-图/6-1-1-1-MGraph(无向图)/Mgraph.cpp | 130 ++++ .../6-图/6-1-1-1-MGraph(无向图)/Mgraph.h | 309 ++++++++++ .../6-图/6-1-1-2-Mgraph(无向网)/LinkQueue.h | 112 ++++ .../6-图/6-1-1-2-Mgraph(无向网)/Mgraph.cpp | 130 ++++ .../6-图/6-1-1-2-Mgraph(无向网)/Mgraph.h | 310 ++++++++++ .../6-图/6-1-1-3-Mgraph(有向图)/LinkQueue.h | 112 ++++ .../6-图/6-1-1-3-Mgraph(有向图)/Mgraph.cpp | 130 ++++ .../6-图/6-1-1-3-Mgraph(有向图)/Mgraph.h | 302 +++++++++ .../6-图/6-1-1-4-Mgraph(有向网)/LinkQueue.h | 112 ++++ .../6-图/6-1-1-4-Mgraph(有向网)/Mgraph.cpp | 130 ++++ .../6-图/6-1-1-4-Mgraph(有向网)/Mgraph.h | 304 +++++++++ .../6-图/6-1-2-1-ALGraph(无向图)/ALGraph.cpp | 128 ++++ .../6-图/6-1-2-1-ALGraph(无向图)/ALGraph.h | 405 ++++++++++++ .../6-图/6-1-2-1-ALGraph(无向图)/LinkQueue.h | 112 ++++ .../6-图/6-1-2-2-ALGraph(无向网)/ALGraph.cpp | 128 ++++ .../6-图/6-1-2-2-ALGraph(无向网)/ALGraph.h | 409 ++++++++++++ .../6-图/6-1-2-2-ALGraph(无向网)/LinkQueue.h | 112 ++++ .../6-图/6-1-2-3-ALGraph(有向图)/ALGraph.cpp | 130 ++++ .../6-图/6-1-2-3-ALGraph(有向图)/ALGraph.h | 374 +++++++++++ .../6-图/6-1-2-3-ALGraph(有向图)/LinkQueue.h | 113 ++++ .../6-图/6-1-2-4-ALGraph(有向网)/ALGraph.cpp | 128 ++++ .../6-图/6-1-2-4-ALGraph(有向网)/ALGraph.h | 377 ++++++++++++ .../6-图/6-1-2-4-ALGraph(有向网)/LinkQueue.h | 112 ++++ .../6-图/6-3-1-MGTraverseApp/LinkQueue.h | 112 ++++ .../6-3-1-MGTraverseApp/MGTraverseApp.cpp | 107 ++++ OrigFiles/6-图/6-3-1-MGTraverseApp/Mgraph.h | 299 +++++++++ .../6-3-2-ALGTraverseApp/ALGTraverseApp.cpp | 132 ++++ OrigFiles/6-图/6-3-2-ALGTraverseApp/ALGraph.h | 405 ++++++++++++ .../6-图/6-3-2-ALGTraverseApp/LinkQueue.h | 112 ++++ .../6-3-ALGTraverseApp/ALGTraverseApp.cpp | 132 ++++ OrigFiles/6-图/6-3-ALGTraverseApp/ALGraph.h | 405 ++++++++++++ OrigFiles/6-图/6-3-ALGTraverseApp/LinkQueue.h | 112 ++++ OrigFiles/6-图/6-3-MGTraverseApp/LinkQueue.h | 112 ++++ .../6-图/6-3-MGTraverseApp/MGTraverseApp.cpp | 107 ++++ OrigFiles/6-图/6-3-MGTraverseApp/Mgraph.h | 299 +++++++++ .../6-4-1-MinTree(最小生成树)/LinkQueue.h | 112 ++++ .../6-图/6-4-1-MinTree(最小生成树)/Mgraph.h | 310 ++++++++++ .../6-4-1-MinTree(最小生成树)/MinTree.cpp | 217 +++++++ .../6-4-2-ShorDistance(最短距离)/LinkQueue.h | 112 ++++ .../6-4-2-ShorDistance(最短距离)/Mgraph.h | 308 ++++++++++ .../ShortDistance.cpp | 211 +++++++ .../6-ALGraph(无向图的邻接表存储)/ALGraph.cpp | 127 ++++ .../6-ALGraph(无向图的邻接表存储)/ALGraph.h | 415 +++++++++++++ .../6-ALGraph(无向图的邻接表存储)/LinkQueue.h | 112 ++++ .../6-MGraph(无向图邻接矩阵存储)/LinkQueue.h | 112 ++++ .../6-MGraph(无向图邻接矩阵存储)/Mgraph.cpp | 132 ++++ .../6-MGraph(无向图邻接矩阵存储)/Mgraph.h | 334 ++++++++++ OrigFiles/8-排序/Sort.cpp | 580 ++++++++++++++++++ OrigFiles/8-排序/sort.h | 519 ++++++++++++++++ OrigFiles/树和二叉树/5-1-BiTree/SqQueue_bt.h | 66 ++ OrigFiles/树和二叉树/5-1-BiTree/SqStack_bt.h | 76 +++ OrigFiles/树和二叉树/5-1-BiTree/bitree.cpp | 135 ++++ OrigFiles/树和二叉树/5-1-BiTree/bitree.h | 268 ++++++++ .../5-1-BiTree/验证程序说明5-2-稀疏矩阵求和.pdf | Bin 0 -> 152905 bytes .../树和二叉树/5-2-InThrBiTree/InThrBiTree.h | 128 ++++ .../树和二叉树/5-2-InThrBiTree/ThrBiTree.cpp | 76 +++ .../5-2-InThrBiTree/验证程序说明6-2-线索二叉树.pdf | Bin 0 -> 342510 bytes .../验证程序说明2-1 顺序表.pdf | Bin 0 -> 350002 bytes .../验证程序说明2-2 顺序表应用.pdf | Bin 0 -> 573873 bytes .../验证程序说明2-3 单链表.pdf | Bin 0 -> 550572 bytes .../验证程序说明2-4-稀疏多项式求和.pdf | Bin 0 -> 344674 bytes .../验证程序说明3-1-顺序栈.pdf | Bin 0 -> 543269 bytes .../验证程序说明3-2-链栈.pdf | Bin 0 -> 521277 bytes .../验证程序说明3-3-栈的应用.pdf | Bin 0 -> 494600 bytes .../验证程序说明4-1-顺序队列.pdf | Bin 0 -> 352943 bytes .../验证程序说明4-2-链队.pdf | Bin 0 -> 354905 bytes .../验证程序说明4-3-舞者配对.pdf | Bin 0 -> 225771 bytes .../验证程序说明5-1-稀疏矩阵转置.pdf | Bin 0 -> 263203 bytes .../验证程序说明5-2-稀疏矩阵求和.pdf | Bin 0 -> 152905 bytes 232 files changed, 22806 insertions(+), 1256 deletions(-) rename Chapter1/{b/b.vcxproj => Chapter1.vcxproj} (97%) rename Chapter1/{app1-4/app1-4.vcxproj.filters => Chapter1.vcxproj.filters} (100%) create mode 100644 Chapter1/app1-4.cpp delete mode 100644 Chapter1/app1-4/app1-4.cpp delete mode 100644 Chapter1/b/b.cpp create mode 100644 Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj create mode 100644 Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj.filters create mode 100644 Chapter2/2-5-ReverseLinkList/LinkList.h create mode 100644 Chapter2/2-5-ReverseLinkList/ReverseLinkList.cpp create mode 100644 Chapter3/SqQueue/SqQueue.h create mode 100644 Chapter4/AddMatrix/AddMatrix.cpp create mode 100644 Chapter4/AddMatrix/AddMatrix.vcxproj rename Chapter1/b/b.vcxproj.filters => Chapter4/AddMatrix/AddMatrix.vcxproj.filters (95%) create mode 100644 Chapter4/Chapter4.sln create mode 100644 Chapter4/MatrixTrans/MatrixTrans.cpp create mode 100644 Chapter4/MatrixTrans/MatrixTrans.vcxproj create mode 100644 Chapter4/MatrixTrans/MatrixTrans.vcxproj.filters create mode 100644 Chapter5/BiTree/BiTree.vcxproj create mode 100644 Chapter5/BiTree/BiTree.vcxproj.filters create mode 100644 Chapter5/BiTree/bitree.cpp create mode 100644 Chapter5/BiTree/bitree.h create mode 100644 Chapter5/Chapter5.sln rename Chapter1/app1-4/app1-4.vcxproj => Chapter5/Huffmn/Huffmn.vcxproj (96%) create mode 100644 Chapter5/Huffmn/Huffmn.vcxproj.filters create mode 100644 Chapter5/Huffmn/HumanTree.cpp create mode 100644 Chapter5/ThrBiTree/ThrBiTree.cpp create mode 100644 Chapter5/ThrBiTree/ThrBiTree.vcxproj create mode 100644 Chapter5/ThrBiTree/ThrBiTree.vcxproj.filters create mode 100644 Exercise/BiTreeExterned/BiTreeExterned.sln create mode 100644 Exercise/BiTreeExterned/BiTreeExterned.vcxproj create mode 100644 Exercise/BiTreeExterned/BiTreeExterned.vcxproj.filters create mode 100644 Exercise/BiTreeExterned/bitree.cpp create mode 100644 Exercise/BiTreeExterned/bitree.h rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Del_e_in_Linear_List.sln (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Linked_List/LinkList.h (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Linked_List/Linked_List.vcxproj (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Linked_List/Linked_List.vcxproj.filters (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Linked_List/main.cpp (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Sequential_List/Sequential_List.vcxproj (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Sequential_List/Sequential_List.vcxproj.filters (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Sequential_List/SqList.h (100%) rename {Del_e_in_Linear_List => Exercise/Del_e_in_Linear_List}/Sequential_List/main.cpp (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Intersection_Union.sln (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Linked_List/LinkList.h (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Linked_List/Linked_List.vcxproj (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Linked_List/Linked_List.vcxproj.filters (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Linked_List/main.cpp (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Sequential_List/Sequential_List.vcxproj (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Sequential_List/Sequential_List.vcxproj.filters (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Sequential_List/SqList.h (100%) rename {Intersection_Union => Exercise/Intersection_Union}/Sequential_List/main.cpp (100%) rename {LinkListOperation => Exercise/LinkListOperation}/LinkList.h (100%) rename {LinkListOperation => Exercise/LinkListOperation}/LinkListOperation.sln (100%) rename {LinkListOperation => Exercise/LinkListOperation}/LinkListOperation.vcxproj (100%) rename {LinkListOperation => Exercise/LinkListOperation}/LinkListOperation.vcxproj.filters (100%) rename {LinkListOperation => Exercise/LinkListOperation}/main.cpp (100%) create mode 100644 Experiment/ExpReportTemplate.dotx create mode 100644 Experiment/Experiment1/Report.docx create mode 100644 Experiment/Experiment1/Task1/Intersection_Union.sln create mode 100644 Experiment/Experiment1/Task1/Linked_List/LinkList.h create mode 100644 Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj create mode 100644 Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj.filters create mode 100644 Experiment/Experiment1/Task1/Linked_List/main.cpp create mode 100644 Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj create mode 100644 Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj.filters create mode 100644 Experiment/Experiment1/Task1/Sequential_List/SqList.h create mode 100644 Experiment/Experiment1/Task1/Sequential_List/main.cpp create mode 100644 Experiment/Experiment1/Task2/LinkList.h create mode 100644 Experiment/Experiment1/Task2/LinkListOperation.sln create mode 100644 Experiment/Experiment1/Task2/LinkListOperation.vcxproj create mode 100644 Experiment/Experiment1/Task2/LinkListOperation.vcxproj.filters create mode 100644 Experiment/Experiment1/Task2/main.cpp create mode 100644 Experiment/Experiment2/Report.docx create mode 100644 Experiment/Experiment2/Task1/BracketsMatch.cpp create mode 100644 Experiment/Experiment2/Task1/BracketsMatch.sln create mode 100644 Experiment/Experiment2/Task1/BracketsMatch.vcxproj create mode 100644 Experiment/Experiment2/Task1/BracketsMatch.vcxproj.filters create mode 100644 Experiment/Experiment2/Task1/LinkStack.h create mode 100644 Experiment/Experiment2/Task2/Ferry.cpp create mode 100644 Experiment/Experiment2/Task2/Ferry.sln create mode 100644 Experiment/Experiment2/Task2/Ferry.vcxproj create mode 100644 Experiment/Experiment2/Task2/Ferry.vcxproj.filters create mode 100644 Experiment/Experiment2/Task2/LinkQueue.h create mode 100644 Experiment/Experiment3/LeafNum.cpp create mode 100644 Experiment/Experiment3/LeafNum.sln create mode 100644 Experiment/Experiment3/LeafNum.vcxproj create mode 100644 Experiment/Experiment3/LeafNum.vcxproj.filters create mode 100644 Experiment/Experiment3/Report.docx create mode 100644 Experiment/Experiment3/bitree.h create mode 100644 Experiment/Experiment6/InsertSort.cpp create mode 100644 Experiment/Experiment6/InsertSort.sln create mode 100644 Experiment/Experiment6/InsertSort.vcxproj create mode 100644 Experiment/Experiment6/InsertSort.vcxproj.filters create mode 100644 Experiment/Experiment6/LinkList.h create mode 100644 Experiment/Experiment6/Report.docx delete mode 100644 OrigFiles/1-绪/b.cpp create mode 100644 OrigFiles/2-1/2-1.cbp create mode 100644 OrigFiles/2-1/2-1.layout rename OrigFiles/{2-线性表/2-2-LinkList-单链表 => 2-1}/LinkList.h (87%) create mode 100644 OrigFiles/2-1/main.cpp rename OrigFiles/{2-线性表/2-2-LinkList-单链表 => 2-线性表-源码/2-线性表-源码/LinkList-单链表/LinkList-单链表}/LinkList.cpp (72%) create mode 100644 OrigFiles/2-线性表-源码/2-线性表-源码/LinkList-单链表/LinkList-单链表/LinkList.h rename OrigFiles/{2-线性表/2-4-PolyAdd-稀疏多项式求和 => 2-线性表-源码/2-线性表-源码/PolyAdd-稀疏多项式求和}/PolyAdd.cpp (67%) create mode 100644 OrigFiles/2-线性表-源码/2-线性表-源码/ReverseLinkList-单链表逆置/LinkList.h create mode 100644 OrigFiles/2-线性表-源码/2-线性表-源码/ReverseLinkList-单链表逆置/ReverseLinkList.cpp rename OrigFiles/{2-线性表/2-3-SqListApp-顺序表应用 => 2-线性表-源码/2-线性表-源码/SqListApp-顺序表应用}/SqList.h (90%) create mode 100644 OrigFiles/2-线性表-源码/2-线性表-源码/SqListApp-顺序表应用/SqListApp.cpp delete mode 100644 OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.cpp delete mode 100644 OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.h delete mode 100644 OrigFiles/2-线性表/2-3-SqListApp-顺序表应用/SqListApp.cpp create mode 100644 OrigFiles/3-特殊线性表 栈和队列/队列/LinkQueue.cpp create mode 100644 OrigFiles/3-特殊线性表 栈和队列/队列/LinkQueue.h delete mode 100644 OrigFiles/3-特殊线性表/3-DancePartner(舞伴问题)/DancePartner.cpp rename OrigFiles/3-特殊线性表/{3-LinkQueue(链队) => 3-LinkQueue(链队)}/LinkQueue.cpp (83%) rename OrigFiles/3-特殊线性表/{3-DancePartner(舞伴问题) => 3-LinkQueue(链队)}/LinkQueue.h (100%) rename OrigFiles/3-特殊线性表/{3-LinkStack(链栈) => 3-LinkStack(链栈)}/LinkStack.cpp (84%) rename OrigFiles/3-特殊线性表/{3-LinkStack(链栈) => 3-LinkStack(链栈)}/LinkStack.h (56%) delete mode 100644 OrigFiles/3-特殊线性表/3-SqQueue(循环队列)/SqQueue.cpp rename OrigFiles/3-特殊线性表/{3-SqStack(顺序栈) => 3-SqStack(顺序栈)}/SqStack.cpp (67%) rename OrigFiles/3-特殊线性表/{3-SqStack(顺序栈) => 3-SqStack(顺序栈)}/SqStack.h (89%) create mode 100644 OrigFiles/3-特殊线性表/BracketsMatch(括号匹配)/BracketsMatch.cbp create mode 100644 OrigFiles/3-特殊线性表/BracketsMatch(括号匹配)/BracketsMatch.cpp create mode 100644 OrigFiles/3-特殊线性表/BracketsMatch(括号匹配)/BracketsMatch.layout create mode 100644 OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cbp create mode 100644 OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cpp create mode 100644 OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.depend create mode 100644 OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.layout create mode 100644 OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cbp create mode 100644 OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cpp create mode 100644 OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.depend create mode 100644 OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.layout create mode 100644 OrigFiles/3-特殊线性表/LinkQueue(链队)/LinkQueue.cpp rename OrigFiles/3-特殊线性表/{3-LinkQueue(链队) => LinkQueue(链队)}/LinkQueue.h (89%) create mode 100644 OrigFiles/3-特殊线性表/LinkStack(链栈)/LinkStack.cpp create mode 100644 OrigFiles/3-特殊线性表/LinkStack(链栈)/LinkStack.h create mode 100644 OrigFiles/3-特殊线性表/SqQueue(循环队列)/SqQueue.cpp create mode 100644 OrigFiles/3-特殊线性表/SqQueue(循环队列)/SqQueue.h create mode 100644 OrigFiles/3-特殊线性表/SqStack(顺序栈)/SqStack.cpp create mode 100644 OrigFiles/3-特殊线性表/SqStack(顺序栈)/SqStack.h create mode 100644 OrigFiles/4_数组和矩阵/AddMatrix/AddMatrix.cpp create mode 100644 OrigFiles/4_数组和矩阵/MatrixTrans/MatrixTrans.cpp create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/SqQueue.h create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/SqStack.h create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/bitree.cpp create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/bitree.h create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/InThrBiTree.h create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/ThrBiTree.cpp create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/SqQueue.h create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/SqStack.h create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/bitree.cpp create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/bitree.h create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/Huffmn/HumanTree.cpp create mode 100644 OrigFiles/5-树和二叉树/5-树和二叉树/ThrBiTree/ThrBiTree.cpp create mode 100644 OrigFiles/6-图/6-1-1-1-MGraph(无向图)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-1-1-1-MGraph(无向图)/Mgraph.cpp create mode 100644 OrigFiles/6-图/6-1-1-1-MGraph(无向图)/Mgraph.h create mode 100644 OrigFiles/6-图/6-1-1-2-Mgraph(无向网)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-1-1-2-Mgraph(无向网)/Mgraph.cpp create mode 100644 OrigFiles/6-图/6-1-1-2-Mgraph(无向网)/Mgraph.h create mode 100644 OrigFiles/6-图/6-1-1-3-Mgraph(有向图)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-1-1-3-Mgraph(有向图)/Mgraph.cpp create mode 100644 OrigFiles/6-图/6-1-1-3-Mgraph(有向图)/Mgraph.h create mode 100644 OrigFiles/6-图/6-1-1-4-Mgraph(有向网)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-1-1-4-Mgraph(有向网)/Mgraph.cpp create mode 100644 OrigFiles/6-图/6-1-1-4-Mgraph(有向网)/Mgraph.h create mode 100644 OrigFiles/6-图/6-1-2-1-ALGraph(无向图)/ALGraph.cpp create mode 100644 OrigFiles/6-图/6-1-2-1-ALGraph(无向图)/ALGraph.h create mode 100644 OrigFiles/6-图/6-1-2-1-ALGraph(无向图)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-1-2-2-ALGraph(无向网)/ALGraph.cpp create mode 100644 OrigFiles/6-图/6-1-2-2-ALGraph(无向网)/ALGraph.h create mode 100644 OrigFiles/6-图/6-1-2-2-ALGraph(无向网)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-1-2-3-ALGraph(有向图)/ALGraph.cpp create mode 100644 OrigFiles/6-图/6-1-2-3-ALGraph(有向图)/ALGraph.h create mode 100644 OrigFiles/6-图/6-1-2-3-ALGraph(有向图)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-1-2-4-ALGraph(有向网)/ALGraph.cpp create mode 100644 OrigFiles/6-图/6-1-2-4-ALGraph(有向网)/ALGraph.h create mode 100644 OrigFiles/6-图/6-1-2-4-ALGraph(有向网)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-3-1-MGTraverseApp/LinkQueue.h create mode 100644 OrigFiles/6-图/6-3-1-MGTraverseApp/MGTraverseApp.cpp create mode 100644 OrigFiles/6-图/6-3-1-MGTraverseApp/Mgraph.h create mode 100644 OrigFiles/6-图/6-3-2-ALGTraverseApp/ALGTraverseApp.cpp create mode 100644 OrigFiles/6-图/6-3-2-ALGTraverseApp/ALGraph.h create mode 100644 OrigFiles/6-图/6-3-2-ALGTraverseApp/LinkQueue.h create mode 100644 OrigFiles/6-图/6-3-ALGTraverseApp/ALGTraverseApp.cpp create mode 100644 OrigFiles/6-图/6-3-ALGTraverseApp/ALGraph.h create mode 100644 OrigFiles/6-图/6-3-ALGTraverseApp/LinkQueue.h create mode 100644 OrigFiles/6-图/6-3-MGTraverseApp/LinkQueue.h create mode 100644 OrigFiles/6-图/6-3-MGTraverseApp/MGTraverseApp.cpp create mode 100644 OrigFiles/6-图/6-3-MGTraverseApp/Mgraph.h create mode 100644 OrigFiles/6-图/6-4-1-MinTree(最小生成树)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-4-1-MinTree(最小生成树)/Mgraph.h create mode 100644 OrigFiles/6-图/6-4-1-MinTree(最小生成树)/MinTree.cpp create mode 100644 OrigFiles/6-图/6-4-2-ShorDistance(最短距离)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-4-2-ShorDistance(最短距离)/Mgraph.h create mode 100644 OrigFiles/6-图/6-4-2-ShorDistance(最短距离)/ShortDistance.cpp create mode 100644 OrigFiles/6-图/6-ALGraph(无向图的邻接表存储)/ALGraph.cpp create mode 100644 OrigFiles/6-图/6-ALGraph(无向图的邻接表存储)/ALGraph.h create mode 100644 OrigFiles/6-图/6-ALGraph(无向图的邻接表存储)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-MGraph(无向图邻接矩阵存储)/LinkQueue.h create mode 100644 OrigFiles/6-图/6-MGraph(无向图邻接矩阵存储)/Mgraph.cpp create mode 100644 OrigFiles/6-图/6-MGraph(无向图邻接矩阵存储)/Mgraph.h create mode 100644 OrigFiles/8-排序/Sort.cpp create mode 100644 OrigFiles/8-排序/sort.h create mode 100644 OrigFiles/树和二叉树/5-1-BiTree/SqQueue_bt.h create mode 100644 OrigFiles/树和二叉树/5-1-BiTree/SqStack_bt.h create mode 100644 OrigFiles/树和二叉树/5-1-BiTree/bitree.cpp create mode 100644 OrigFiles/树和二叉树/5-1-BiTree/bitree.h create mode 100644 OrigFiles/树和二叉树/5-1-BiTree/验证程序说明5-2-稀疏矩阵求和.pdf create mode 100644 OrigFiles/树和二叉树/5-2-InThrBiTree/InThrBiTree.h create mode 100644 OrigFiles/树和二叉树/5-2-InThrBiTree/ThrBiTree.cpp create mode 100644 OrigFiles/树和二叉树/5-2-InThrBiTree/验证程序说明6-2-线索二叉树.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明2-1 顺序表.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明2-2 顺序表应用.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明2-3 单链表.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明2-4-稀疏多项式求和.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明3-1-顺序栈.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明3-2-链栈.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明3-3-栈的应用.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明4-1-顺序队列.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明4-2-链队.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明4-3-舞者配对.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明5-1-稀疏矩阵转置.pdf create mode 100644 OrigFiles/验证实验说明-线性部分/验证程序说明5-2-稀疏矩阵求和.pdf diff --git a/.gitignore b/.gitignore index 8ada255..fff7f73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +!OrigFiles/ + ### C++ template # Prerequisites *.d diff --git a/Chapter1/Chapter1.sln b/Chapter1/Chapter1.sln index 6d89f48..fc2b98b 100644 --- a/Chapter1/Chapter1.sln +++ b/Chapter1/Chapter1.sln @@ -1,11 +1,9 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 -VisualStudioVersion = 17.8.34322.80 +VisualStudioVersion = 17.9.34701.34 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app1-4", "app1-4\app1-4.vcxproj", "{7A2BD8EC-2595-4070-BE3A-2BF2140848B2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "b", "b\b.vcxproj", "{51CE097C-C445-4A3E-A678-539C70E334DF}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Chapter1", "Chapter1.vcxproj", "{38D719C8-7D69-48A6-93DC-234C93F7B6BC}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,27 +13,19 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Debug|x64.ActiveCfg = Debug|x64 - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Debug|x64.Build.0 = Debug|x64 - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Debug|x86.ActiveCfg = Debug|Win32 - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Debug|x86.Build.0 = Debug|Win32 - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Release|x64.ActiveCfg = Release|x64 - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Release|x64.Build.0 = Release|x64 - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Release|x86.ActiveCfg = Release|Win32 - {7A2BD8EC-2595-4070-BE3A-2BF2140848B2}.Release|x86.Build.0 = Release|Win32 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Debug|x64.ActiveCfg = Debug|x64 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Debug|x64.Build.0 = Debug|x64 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Debug|x86.ActiveCfg = Debug|Win32 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Debug|x86.Build.0 = Debug|Win32 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Release|x64.ActiveCfg = Release|x64 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Release|x64.Build.0 = Release|x64 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Release|x86.ActiveCfg = Release|Win32 - {51CE097C-C445-4A3E-A678-539C70E334DF}.Release|x86.Build.0 = Release|Win32 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Debug|x64.ActiveCfg = Debug|x64 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Debug|x64.Build.0 = Debug|x64 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Debug|x86.ActiveCfg = Debug|Win32 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Debug|x86.Build.0 = Debug|Win32 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Release|x64.ActiveCfg = Release|x64 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Release|x64.Build.0 = Release|x64 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Release|x86.ActiveCfg = Release|Win32 + {38D719C8-7D69-48A6-93DC-234C93F7B6BC}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {2E7BE105-4A42-43C5-A5F2-51518A78298B} + SolutionGuid = {E30ECD0C-3E43-481E-9914-3B07AAFE7C8B} EndGlobalSection EndGlobal diff --git a/Chapter1/b/b.vcxproj b/Chapter1/Chapter1.vcxproj similarity index 97% rename from Chapter1/b/b.vcxproj rename to Chapter1/Chapter1.vcxproj index ae621c9..d56d019 100644 --- a/Chapter1/b/b.vcxproj +++ b/Chapter1/Chapter1.vcxproj @@ -18,14 +18,11 @@ x64 - - - 17.0 Win32Proj - {51ce097c-c445-4a3e-a678-539c70e334df} - b + {38d719c8-7d69-48a6-93dc-234c93f7b6bc} + Chapter1 10.0 @@ -129,6 +126,9 @@ true + + + diff --git a/Chapter1/app1-4/app1-4.vcxproj.filters b/Chapter1/Chapter1.vcxproj.filters similarity index 100% rename from Chapter1/app1-4/app1-4.vcxproj.filters rename to Chapter1/Chapter1.vcxproj.filters diff --git a/Chapter1/app1-4.cpp b/Chapter1/app1-4.cpp new file mode 100644 index 0000000..5524dea --- /dev/null +++ b/Chapter1/app1-4.cpp @@ -0,0 +1,33 @@ +#include//cout,cin +using namespace std; + +struct stu +{ + int xh; // 学号 + float height; //身高 +}; + +int MaxH; // 最高身高 + +//算法1.1 +int maxHeight(stu student[], int n) +{ + MaxH = 1; // 1. 设第1个学生身高最高 + for (int i = 2; i <= n; i++) // 2. 从第2个学生起依次与最高身比 + { + if (student[i - 1].height > student[MaxH - 1].height) // 2.1 大于最高身高 + MaxH = i; // 2.2为新最高身高 + } + return student[MaxH - 1].xh; // 3.返回最高身高学生学学号 +} + +int main() +{ + cout << "获取数据" << endl; + int n = 6; //学生数 + int xh; + stu student[6] = { {1703001,176},{1703002,180},{1703003,175},{1703004,182.5},{1703005,158.5},{1703005,173.8} }; + xh = maxHeight(student, n); + cout << "身高最高者是:" << xh << endl; + return 1; +} \ No newline at end of file diff --git a/Chapter1/app1-4/app1-4.cpp b/Chapter1/app1-4/app1-4.cpp deleted file mode 100644 index 244bb33..0000000 --- a/Chapter1/app1-4/app1-4.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// USE B.CPP INSTEAD - -#include -using namespace std; - -void main() -{ - int i=0,j=0,count=0; - for (i=2;i<=1000;i++) - { - for (j=2;j<=i-1;j++) - if(i%j==0) - break; - if(j>i-1) - { - cout< -using namespace std; - -void main() -{ - int i = 0, j = 0, count = 0; - for (i = 2; i <= 1000; i++) - { - for (j = 2; j <= i - 1; j++) - if (i % j == 0) - break; - if (j > i - 1) - { - cout << j << '\t'; - count++; - if (count % 5 == 0) cout << endl; - } - } - return; -} \ No newline at end of file diff --git a/Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj b/Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj new file mode 100644 index 0000000..202b7b5 --- /dev/null +++ b/Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {0b0a9a4c-185a-4345-bd4e-1e48565907e2} + My25ReverseLinkList + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj.filters b/Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj.filters new file mode 100644 index 0000000..a5d78e2 --- /dev/null +++ b/Chapter2/2-5-ReverseLinkList/2-5-ReverseLinkList.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + + + 头文件 + + + \ No newline at end of file diff --git a/Chapter2/2-5-ReverseLinkList/LinkList.h b/Chapter2/2-5-ReverseLinkList/LinkList.h new file mode 100644 index 0000000..6dea850 --- /dev/null +++ b/Chapter2/2-5-ReverseLinkList/LinkList.h @@ -0,0 +1,237 @@ + +template +struct LNode //链表结点 +{ + DT data; //数据域,存储数据元素值 + LNode* next; //指针域,指向下一个结点 +}; + + +//【算法2.14】 创建空单链表 +template +bool InitList(LNode
*& L) +{ + L = new LNode
; // 1.创建头结点 + if (!L) exit(1); // 2.创建失败,退出 + L->next = NULL; // 3.创建成功 + return true; // 返回true +} + +//【算法2.15】 尾插法创建n的元素 +template +bool CreateList_1(LNode
*& L, int n) +{ + LNode
* p, * s; + p = L; //1.工作指针初始化,指向尾结点 + cout << "依次输入" << n << "个数据元素:" << endl; + for (int i = 1; i <= n; i++) // 2.按元素位序正序创建各结点 + { + s = new LNode
; // 2.1 新建一个结点s + if (!s) // 2.2 创建失败,返回false + return false; + cin >> s->data; // 2.3 输入结点值 + s->next = p->next; // 2.4 s 链在表尾 + p->next = s; + p = s; // 2.5 工作指针指向 s + } + return true; // 3.创建成功,返回true +} + +//【算法2.16】 头插法创建n个元素 +template +bool CreateList_2(LNode
* (&L), int n) +{ + LNode
* s; + cout << "逆序输入" << n << "个数据元素:" << endl; + for (int i = 1; i <= n; i++) // 1.按元素位序逆序创建各结点 + { + s = new LNode
; // 1.1 新建一个结点 s + if (!s) // 1.2 创建失败,返回false + return false; + cin >> s->data; // 1.3 输入结点值 + s->next = L->next; // 1.4 s 在头结点后 + L->next = s; + } + return true; // 1.创建成功,返回true +} + +//【算法2.17】 +template +void DestroyList(LNode
* (&L)) // 释放链表所占空间 +{ + LNode
* p; + while (L) // 1. 表非空,从头结点开始,依次释放结点 + { + p = L; // 1.1 处理表头结点 + L = L->next; // 1.2 头指针后移 + delete p; // 1.3 释放表头结点所占内存 + } + L = NULL; // 2.头指针指向空 +} + +//【算法2.18】 获取第i个元素 +template +bool GetElem_i(LNode
* L, int i, DT& e) +{ + LNode
* p; // 1.初始化 + p = L->next; // 1.1 设置工作指针,从首结点开始,数结点 + int j = 1; // 1.2 计数器初始化 + while (p && j < i) // 2.定位到第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3 未找到,返回false + return false; + else // 4. 找到 + { + e = p->data; // 获取第i个元素值 + return true; // 返回true + } +} + +//【算法2.19】 查找值为e的元素位序 +template +int LocateElem_e(LNode
* L, DT e) +{ + + LNode
* p; // 1.初始化从首元开始查找 + p = L->next; // 1.1从首元开始查找 + int j = 1; // 1.2 计数器初值 + while (p && p->data != e) // 2.顺序查找 + { + p = p->next; // 2.1未找到指针后移 + j++; // 2.2 计数器增1 + } + if (p == NULL) // 3. 判断是否找到 + return 0; // 3.1末找到,返回0 + else + return j; // 3.2 找到,返回位序 +} + +//【算法2.20】 插入第i个元素 +template +bool InsertElem_i(LNode
* (&L), int i, DT e) +{ + + int j = 0; + LNode
* p; // 1.初始化 + p = L; // 工作指针初始化 + while (p && j < i - 1) // 2. 定位到插入点前驱 + { + p = p->next;// + j++; + } + if (!p || j > i - 1) // 3.判断定位是否成功: + return false; // 3.1 定位失败,不能插入 + else // 3.2 定位成功 + { + LNode
* s; + s = new LNode
; // 3.2.1建立新结点 + s->data = e; // 3.2.2新结点赋值 + s->next = p->next; // 3.2.3结点S链接到p结点之后 + p->next = s; + return true; // 3.2.4 插入成功,返回true + } + +} + +//【算法2.21】 删除第i个元素 +template +bool DeleElem_i(LNode
* (&L), int i) +{ + + LNode
* p, * q; //1.初始化:设置工作指针 + p = L; //查找从头结点开始 + int j = 0; //计数器初始化 + while (p->next && j < i - 1) //2.p定位到删除点的前驱 + { + p = p->next; // + j++; + } + if (!p->next || j > i - 1) //3.删除位置不合理,不能删除 + return false; //返回false + else //4.删除操作 + { + q = p->next; //4.1暂存删除结点位置 + p->next = q->next; //4.2从链表中摘除删除结点 + delete q; + return true; //4.3删除成功,返回true + } +} + + +//【算法2.22】 修改第i个元素值 +template +bool PutElem_i(LNode
* (&L), int i, DT e) +{ + LNode
* p; // 1.初始化:设置工作指针 + p = L->next; // 从首结点开始,数结点 + int j = 1; // 计数器初始化 + while (p && j < i) // 2.查找第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3.元素不存在,返回false + return false; + else // 4.定位成功 + { + p->data = e; // 修改元素值 + return true; // 返回true + } +} + +// 释放链表所占空间 +template +void ClearList(LNode
* (&L)) +{ + + LNode
* p; + while (L->next) // 从首元结点开始,依次释放结点 + { + p = L->next; + L->next = p->next; + delete p; + } + cout << endl << "表已清空!" << endl; +} + + +//【算法2.23】 测表长 +template +int ListLength(LNode
* L) +{ // 1.初始化 + int len = 0; // 1.1 结点计数器赋初值0 + LNode
* p; // 1.2设置工作指针 + p = L; // 指向头结点 + while (p->next) // 2.数结点个数。有后继结点, + { + len++; p = p->next; // 结点数增1,指针后移 + } + return len; // 3.返回表长 +} + +// +template +bool ListEmpty(LNode
* L) //测表空 +{ + if (L->next == NULL) + return true; //空表,返回1 + else + return false; //不空,返回0 +} + + +//【算法2.24】 遍历表 +template +void DispList(LNode
* L) // 显示表内容 +{ + LNode
* p; // 1. 设置工作指针 + p = L->next; // 从首元结点开始遍历 + while (p) // 2.依次输出各结点值 + { + cout << p->data << "\t"; + p = p->next; + + } + cout << endl; +} diff --git a/Chapter2/2-5-ReverseLinkList/ReverseLinkList.cpp b/Chapter2/2-5-ReverseLinkList/ReverseLinkList.cpp new file mode 100644 index 0000000..976551f --- /dev/null +++ b/Chapter2/2-5-ReverseLinkList/ReverseLinkList.cpp @@ -0,0 +1,82 @@ +#include //cout,cin +using namespace std; +#include "LinkList.h" + + +//算法2.25 单链表逆置 +void ReverseLinkList(LNode*& L) +{ + LNode* p, * q; // 1.设置工作指针 + p = L->next; // 原链表头结点,作为逆置后表的头结点 + L->next = NULL; + while (p) // 2. 依次摘除原链表结点,以头插法插入到逆置链表中 + { + q = p; // 2.1 q取当前结点位置 + p = p->next; // 2.2 p指向下一个待处理结点 + q->next = L->next; // 2.3 将q 插入到头结点之后 + L->next = q; + } +} + + + +void dispmenu() +{//显示主菜单 + cout << endl; + cout << "1-创建单链表\n"; + cout << "2-逆置单链表\n"; + cout << "3-显示单链表\n"; + cout << "4-退出\n"; +} + +char pause; + +//主函数 +int main() +{ + int n; + //int e; + LNode* L; + system("cls"); // 执行系统命令cls,清屏 + + int choice; + do + { + dispmenu(); // 显示主菜单 + cout << "Enter choice(1~4):"; + cin >> choice; + switch (choice) + { + case 1: // 创建单链表 + InitList(L); + cout << "输入要创建元素个数:"; + cin >> n; + cout << endl; + CreateList_1(L, n); + cout << "创建的单链表为:"; + DispList(L); + cout << endl; + break; + case 2: // 逆置单链表 + ReverseLinkList(L); + cout << "逆置后的单链表为:"; + DispList(L); + cout << endl; + break; + case 3: // 显示表 + DispList(L); + cout << endl; + cin.get(pause); + system("pause"); + break; + case 4: // 退出 + DestroyList(L); + cout << "结束运行" << endl; + break; + default: // 无效选择 + cout << "Invalid choice\n"; + break; + } + } while (choice != 4); + return 0; +}//end of main function \ No newline at end of file diff --git a/Chapter2/Chapter2.sln b/Chapter2/Chapter2.sln index 2c77d0e..580c60b 100644 --- a/Chapter2/Chapter2.sln +++ b/Chapter2/Chapter2.sln @@ -11,6 +11,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2-3-SqListApp", "2-3-SqList EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2-4-PolyAdd", "2-4-PolyAdd\2-4-PolyAdd.vcxproj", "{3BBBC9D3-2AEA-48CC-ABF7-908DA7982A0B}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2-5-ReverseLinkList", "2-5-ReverseLinkList\2-5-ReverseLinkList.vcxproj", "{0B0A9A4C-185A-4345-BD4E-1E48565907E2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -51,6 +53,14 @@ Global {3BBBC9D3-2AEA-48CC-ABF7-908DA7982A0B}.Release|x64.Build.0 = Release|x64 {3BBBC9D3-2AEA-48CC-ABF7-908DA7982A0B}.Release|x86.ActiveCfg = Release|Win32 {3BBBC9D3-2AEA-48CC-ABF7-908DA7982A0B}.Release|x86.Build.0 = Release|Win32 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Debug|x64.ActiveCfg = Debug|x64 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Debug|x64.Build.0 = Debug|x64 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Debug|x86.ActiveCfg = Debug|Win32 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Debug|x86.Build.0 = Debug|Win32 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Release|x64.ActiveCfg = Release|x64 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Release|x64.Build.0 = Release|x64 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Release|x86.ActiveCfg = Release|Win32 + {0B0A9A4C-185A-4345-BD4E-1E48565907E2}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Chapter3/SqQueue/SqQueue.cpp b/Chapter3/SqQueue/SqQueue.cpp index c771ee7..039a02f 100644 --- a/Chapter3/SqQueue/SqQueue.cpp +++ b/Chapter3/SqQueue/SqQueue.cpp @@ -108,7 +108,7 @@ int main() cout << endl; break; case 10: - cout << "\nQ.fornt=" << Q.front << endl; + cout << "\nQ.front=" << Q.front << endl; cout << "Q.rear=" << Q.rear << endl; break; case 0: // 退出 diff --git a/Chapter3/SqQueue/SqQueue.h b/Chapter3/SqQueue/SqQueue.h new file mode 100644 index 0000000..4024a2a --- /dev/null +++ b/Chapter3/SqQueue/SqQueue.h @@ -0,0 +1,100 @@ +template +struct SqQueue +{ + DT* base; // 存储空间基地址 + int front; // 队头指针,指向队首元素 + int rear; // 队尾指针,指向队尾元素的后面 + int queuesize; // 队列容量 +}; + +template // 算法3.14 初始化队列 +bool InitQueue(SqQueue
& Q, int m) // 创建容量为m的空队列 +{ + Q.base = new DT[m]; // 1. 申请一组连续的内存空间 + if (!Q.base) exit(1); // 申请失败,退出 + Q.front = Q.rear = 0; // 2. 申请成功,为队列属性赋值 + Q.queuesize = m; + return true; // 3. 返回true +} + +template // 算法3.15 销毁队列 +void DestroyQueue(SqQueue
& Q) // 销毁循环队列 +{ + delete[] Q.base; // 1. 释放循环队列占用的内存空间 + Q.front = Q.rear = 0; // 2. 为队列属性赋值 + Q.queuesize = 0; +} + +template // 算法3.16 入队 +bool EnQueue(SqQueue
& Q, DT e) // 在队尾插入一个新元素 +{ + if ((Q.rear + 1) % Q.queuesize == Q.front) // 1. 队满的情况 + return false; // 无法入队,返回false + Q.base[Q.rear] = e; // 2. 元素e放在队尾指针处 + Q.rear = (Q.rear + 1) % Q.queuesize; // 队尾指针增1 + return true; // 3. 返回true +} + +template // 算法3.17 出队 +bool DeQueue(SqQueue
& Q, DT& e) // 删除队头元素 +{ + if (Q.front == Q.rear) // 1. 队空的情况 + return false; // 无法出队,返回false + e = Q.base[Q.front]; // 2. 取队头元素,赋值给e + Q.front = (Q.front + 1) % Q.queuesize; // 队头指针加1 + return true; // 3. 返回true +} + +template // 算法3.18 取队头元素 +bool GetHead(SqQueue
Q, DT& e) // 取队头元素 +{ + if (Q.front == Q.rear) // 1. 队空的情况 + return false; // 无队头元素,返回false + e = Q.base[Q.front]; // 2. 取队头元素,赋值给e + return true; // 3. 返回true +} + +template +bool GetTail(SqQueue
Q, DT& e) // 取队尾元素 +{ + if (Q.front == Q.rear) // 1. 队空的情况 + return false; // 无队尾元素,返回false + e = Q.base[(Q.rear - 1 + Q.queuesize) % Q.queuesize]; // 2. 取队尾元素,赋值给e + return true; // 3. 返回true +} + +template +int QueueLength(SqQueue
Q) // 测表长 +{ + return (Q.rear - Q.front + Q.queuesize) % Q.queuesize; +} + +template +bool QueueEmpty(SqQueue
Q) // 判队空 +{ + return Q.front == Q.rear; +} + +template +bool QueueFull(SqQueue
Q) // 判队满 +{ + return (Q.rear + 1) % Q.queuesize == Q.front; +} + +template +void ClearQueue(SqQueue
& Q) // 清空队 +{ + Q.front = Q.rear = 0; +} + +template +void DispQueue(SqQueue
Q) // 显示队 +{ + int i = Q.front; + while (i != Q.rear) + { + cout << Q.base[i] << " "; + i = (i + 1) % Q.queuesize; + } + cout << endl; +} \ No newline at end of file diff --git a/Chapter3/SqQueue/SqQueue.vcxproj b/Chapter3/SqQueue/SqQueue.vcxproj index ed6ea7b..3c08411 100644 --- a/Chapter3/SqQueue/SqQueue.vcxproj +++ b/Chapter3/SqQueue/SqQueue.vcxproj @@ -129,6 +129,9 @@ + + + diff --git a/Chapter3/SqQueue/SqQueue.vcxproj.filters b/Chapter3/SqQueue/SqQueue.vcxproj.filters index fba4700..423f530 100644 --- a/Chapter3/SqQueue/SqQueue.vcxproj.filters +++ b/Chapter3/SqQueue/SqQueue.vcxproj.filters @@ -19,4 +19,9 @@ 源文件 + + + 头文件 + + \ No newline at end of file diff --git a/Chapter4/AddMatrix/AddMatrix.cpp b/Chapter4/AddMatrix/AddMatrix.cpp new file mode 100644 index 0000000..31a7c3e --- /dev/null +++ b/Chapter4/AddMatrix/AddMatrix.cpp @@ -0,0 +1,203 @@ +#include//cout,cin +#include"process.h"//exit() +#include"stdio.h"//EOF,NULL +using namespace std; + +struct MTNode // 三元组 +{ + int i, j; // 行号,列号 + int e; // 非零元 + MTNode* next; // 指向同行下一个结点 +}; + +typedef struct +{ + int mu, nu, tu; // 行数、列数、非零元个数 + MTNode** rops; // 存放各行链表的头指针 +}LMatrix; + +int cmp(int a, int b) // 列号比较 +{ + if (a < b) return -1; + else if (a == b) return 0; + else return 1; +} + +void NodeCopy(MTNode*& s, MTNode* x) // 结点拷贝 +{ + s->e = x->e; s->i = x->i; s->j = x->j; +} + +void AddNode(MTNode*& lp, MTNode*& lq, MTNode* s) // 表尾添加结点 +{ + MTNode* p; + p = new MTNode; + NodeCopy(p, s); + p->next = NULL; + if (lp == NULL) // 首元结点 + { + lp = p; + lq = p; + } + else // 非首元结点 + { + lq->next = p; + lq = p; + } +}// + + +LMatrix MatrixAdd(LMatrix ma, LMatrix mb) // 求矩阵和 +{ + LMatrix mc; + MTNode* pa, * pb, * pc; // 分别指向被加数、加数、和矩阵行向量首元结点 + MTNode* s;// + int i, sum; + int m, n; // 行数,列数 + int flag = 1; + m = ma.mu; + n = ma.nu; + mc.mu = m; mc.nu = n; mc.tu = 0; mc.rops = NULL; + if (mc.rops) delete[] mc.rops; + mc.rops = new MTNode * [m]; + for (i = 0; i < m; i++) + mc.rops[i] = NULL; // C行指针向量初始化 + for (i = 0; i < m; i++) + { + pa = ma.rops[i]; + pb = mb.rops[i]; + pc = mc.rops[i]; + while (pa && pb) // 被加矩阵、加矩阵行链不空 + { + flag = 1; + if (pa->j < pb->j) + { + s = new MTNode;// + NodeCopy(s, pa); + s->next = NULL; + pa = pa->next; + } + else if (pa->j == pb->j) + { + sum = pa->e + pb->e; + if (sum == 0) flag = 0; + else + { + s = new MTNode; + NodeCopy(s, pa); + s->e = sum; + s->next = NULL; + } + pa = pa->next; pb = pb->next;//pa,pb后移 + } + else + { + s = new MTNode; + NodeCopy(s, pb); // 复制pb所指结点 + pb = pb->next; // pb后移 + s->next = NULL; + } + if (flag) // 有新结点生成 + { + mc.tu++; + AddNode(mc.rops[i], pc, s); + } + }//while + if (pa) // pa不空,复制pa剩余链到和矩阵中 + { + while (pa) + { + s = new MTNode; + NodeCopy(s, pa); pa = pa->next; + AddNode(mc.rops[i], pc, s); + }//while + }//if(pa) + if (pb) // pb不空,复制pb剩余链到和矩阵中 + { + while (pb) + { + s = new MTNode; + NodeCopy(s, pb); pb = pb->next; + AddNode(mc.rops[i], pc, s); + }//while + }//if(pb) + }//for + return mc; +}//MAdd + +void MDisp(LMatrix a) +{ + MTNode* p; + int i, j, c = 0; + for (i = 0; i < a.mu; i++) + { + p = a.rops[i]; + for (j = 0; j < a.nu; j++) + { + if (p == NULL) + cout << '\t' << c; + else if (j < p->j) + cout << '\t' << c; + else + { + cout << '\t' << p->e; + p = p->next; + } + }//for + cout << endl; + }//for +}//MatrixDisp + +LMatrix MCreate(int d[][3], int m, int n, int k) +{ // 由三元组的二维数组生成行向量稀疏存储矩阵 + LMatrix M = { m,n,k,NULL }; + int i, r1, r2; + MTNode* s, * p; // 工作指针 + if (M.rops) delete[] M.rops; + M.rops = new MTNode * [m]; + for (i = 0; i < m; i++) + M.rops[i] = NULL; + r1 = m; + p = M.rops[r1];// + for (i = 0; i < k; i++) // 扫描非零元数组 + { + s = new MTNode; + s->i = d[i][0]; + s->j = d[i][1]; + s->e = d[i][2]; + r2 = s->i; // 非零元所在行 + if (r2 != r1) // 创建链表第1个结点 + { + M.rops[r2] = s; + s->next = NULL; + p = s; + r1 = r2; + } + else // 创建链表非首元结点 + { + s->next = p->next; + p->next = s; + p = s; + } + }//for + return M; +}//MCreate + + +void main() +{ + //MTNode *p; + LMatrix ma, mb, mc; + int m = 4, n = 6; // 行数,列数 + int da[5][3] = { {0,1,3},{1,1,2},{1,3,5},{3,0,9},{3,5,1} }; + int db[4][3] = { {0,2,7},{1,1,6},{1,3,-5},{2,1,4} }; + ma = MCreate(da, 4, 6, 5); // 构造ma矩阵 + cout << "ma=" << endl; + MDisp(ma); // 显示ma矩阵 + mb = MCreate(db, 4, 6, 4); // 构造mb矩阵 + cout << "mb=" << endl; + MDisp(mb); // 显示mb矩阵 + mc = MatrixAdd(ma, mb); // 求mc=ma+mb + cout << "mc=ma+mb=" << endl; + MDisp(mc); // 输出和矩阵 +} \ No newline at end of file diff --git a/Chapter4/AddMatrix/AddMatrix.vcxproj b/Chapter4/AddMatrix/AddMatrix.vcxproj new file mode 100644 index 0000000..bae4e33 --- /dev/null +++ b/Chapter4/AddMatrix/AddMatrix.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {01a69829-c675-4cad-99d2-35be3dc4ed2c} + AddMatrix + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + false + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/Chapter1/b/b.vcxproj.filters b/Chapter4/AddMatrix/AddMatrix.vcxproj.filters similarity index 95% rename from Chapter1/b/b.vcxproj.filters rename to Chapter4/AddMatrix/AddMatrix.vcxproj.filters index a43892b..e873347 100644 --- a/Chapter1/b/b.vcxproj.filters +++ b/Chapter4/AddMatrix/AddMatrix.vcxproj.filters @@ -15,7 +15,7 @@ - + 源文件 diff --git a/Chapter4/Chapter4.sln b/Chapter4/Chapter4.sln new file mode 100644 index 0000000..4a8b82a --- /dev/null +++ b/Chapter4/Chapter4.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34701.34 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AddMatrix", "AddMatrix\AddMatrix.vcxproj", "{01A69829-C675-4CAD-99D2-35BE3DC4ED2C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MatrixTrans", "MatrixTrans\MatrixTrans.vcxproj", "{AE81732D-D011-4A36-9D89-0C258ADB5627}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Debug|x64.ActiveCfg = Debug|x64 + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Debug|x64.Build.0 = Debug|x64 + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Debug|x86.ActiveCfg = Debug|Win32 + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Debug|x86.Build.0 = Debug|Win32 + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Release|x64.ActiveCfg = Release|x64 + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Release|x64.Build.0 = Release|x64 + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Release|x86.ActiveCfg = Release|Win32 + {01A69829-C675-4CAD-99D2-35BE3DC4ED2C}.Release|x86.Build.0 = Release|Win32 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Debug|x64.ActiveCfg = Debug|x64 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Debug|x64.Build.0 = Debug|x64 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Debug|x86.ActiveCfg = Debug|Win32 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Debug|x86.Build.0 = Debug|Win32 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Release|x64.ActiveCfg = Release|x64 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Release|x64.Build.0 = Release|x64 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Release|x86.ActiveCfg = Release|Win32 + {AE81732D-D011-4A36-9D89-0C258ADB5627}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {32AA252A-8427-41AB-8DDD-F9DC7EE96753} + EndGlobalSection +EndGlobal diff --git a/Chapter4/MatrixTrans/MatrixTrans.cpp b/Chapter4/MatrixTrans/MatrixTrans.cpp new file mode 100644 index 0000000..ecd08d9 --- /dev/null +++ b/Chapter4/MatrixTrans/MatrixTrans.cpp @@ -0,0 +1,130 @@ +#include//cout,cin +using namespace std; + + +struct MNode //三元组结点 +{ + int i, j; //行号,列号 + int e; //非零元 +}; + + +struct TSMatrix +{ + int mu, nu, tu; // 行数、列数、非零元个数 + MNode* data; // 三元组表 +}; + +TSMatrix MCreate(int d[][3], int m, int n, int k) //由三元组的二维数组生成行向量稀疏存储矩阵 +{ + TSMatrix M = { m,n,k,NULL }; + if (k != 0) + M.data = new MNode[k]; + for (int i = 0; i < k; i++) + { + M.data[i].i = d[i][0]; + M.data[i].j = d[i][1]; + M.data[i].e = d[i][2]; + } + return M; +}// + + +void MDisp(TSMatrix a) //矩阵显示 +{ + MNode p; + int i, j, k = 0, c = 0; + p = a.data[k]; + for (i = 0; i < a.mu; i++) + { + for (j = 0; j < a.nu; j++) + { + if (k < a.tu && p.i == i && p.j == j) + { + cout << '\t' << p.e; + k++; + if (k < a.tu) p = a.data[k]; + } + else + { + cout << '\t' << c; + } + }//for + cout << endl; + cout << endl; + }//for +}//MatrixDisp + +//算法4.1 转置算法一 +void MatrixTrans_1(TSMatrix A, TSMatrix& B) +{// + int col, p, q; + B.mu = A.nu; B.nu = A.mu; B.tu = A.tu; //B的行数、列数、非零元个数分别等于A的列数、行数和非零元个数 + if (B.tu) // 矩阵B有非零元 + { + q = 0; + for (col = 0; col < A.nu; ++col) // 按列扫描A矩阵 + for (p = 0; p < A.tu; ++p) + if (A.data[p].j == col) // col列有非零元 + { + B.data[q].i = A.data[p].j; // 交换行、列号,生成转置元素 + B.data[q].j = A.data[p].i; + B.data[q].e = A.data[p].e; + ++q; + } + } +} + + + +//算法4.2 快速转置 +void MatrixTrans_2(TSMatrix A, TSMatrix& B) +{ + int col, i, k, q; + int* num, * cpot; + B.mu = A.nu; B.nu = A.mu; B.tu = A.tu; //B的行数、列数、非零元个数分别等于A的列数、行数和非零元个数 + num = new int[B.nu]; + cpot = new int[B.nu]; + if (B.tu) // 非零元个数不为零,实施转置 + { + for (col = 0; col < A.nu; col++) //A中每一列非零元个数初始化为0 + num[col] = 0; + for (i = 0; i < A.tu; i++) //求矩阵A中每一列非零元个数 + num[A.data[i].j]++; + cpot[0] = 0; //A中第0列首个非零元在B中的下标 + for (col = 1; col <= A.nu; ++col) // 求A中每一列首个非零元在B中的下标 + cpot[col] = cpot[col - 1] + num[col - 1]; + for (k = 0; k < A.tu; ++k) //扫描A的三元组表 + { + col = A.data[k].j; //当前三元组列号 + q = cpot[col]; //当前三元组在B中的下标 + B.data[q].i = A.data[k].j; + B.data[q].j = A.data[k].i; + B.data[q].e = A.data[k].e; + cpot[col]++; // 预置同一列下一个三元组在B中的下标 + }//for + }//if +}// + + + +void main() +{ + TSMatrix ma, mb1, mb2; + int m1 = 4, n1 = 6, k1 = 6; //被乘矩阵行数,列数,非零元个数 + int da[6][3] = { {0,2,11},{0,4,12},{1,3,22}, + {2,1,31}, {2,3,32},{3,0,41} }; //ma阵的非零元 + ma = MCreate(da, m1, n1, k1); //生成三元组顺序存储的ma阵 + cout << "ma=" << endl; + MDisp(ma); //显示ma阵 + mb1.data = new MNode[ma.tu]; + mb2.data = new MNode[ma.tu]; + cout << "方法一:直接取,顺序存" << endl; //用方法一转置矩阵 + MatrixTrans_1(ma, mb1); + cout << "mb=" << endl; //显示转置矩阵 + MDisp(mb1); + cout << "方法二:顺序取,直接存" << endl; //用方法二转置矩阵 + MatrixTrans_2(ma, mb2); + cout << "mb=" << endl; //显示转置矩阵 + MDisp(mb2); +}// \ No newline at end of file diff --git a/Chapter4/MatrixTrans/MatrixTrans.vcxproj b/Chapter4/MatrixTrans/MatrixTrans.vcxproj new file mode 100644 index 0000000..2dab3a5 --- /dev/null +++ b/Chapter4/MatrixTrans/MatrixTrans.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {ae81732d-d011-4a36-9d89-0c258adb5627} + MatrixTrans + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/Chapter4/MatrixTrans/MatrixTrans.vcxproj.filters b/Chapter4/MatrixTrans/MatrixTrans.vcxproj.filters new file mode 100644 index 0000000..334c1b3 --- /dev/null +++ b/Chapter4/MatrixTrans/MatrixTrans.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + \ No newline at end of file diff --git a/Chapter5/BiTree/BiTree.vcxproj b/Chapter5/BiTree/BiTree.vcxproj new file mode 100644 index 0000000..2c4c165 --- /dev/null +++ b/Chapter5/BiTree/BiTree.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {904cfcdf-da23-415a-8d68-8e51ad913458} + BiTree + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + false + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Chapter5/BiTree/BiTree.vcxproj.filters b/Chapter5/BiTree/BiTree.vcxproj.filters new file mode 100644 index 0000000..81b66a3 --- /dev/null +++ b/Chapter5/BiTree/BiTree.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + + + 源文件 + + + \ No newline at end of file diff --git a/Chapter5/BiTree/bitree.cpp b/Chapter5/BiTree/bitree.cpp new file mode 100644 index 0000000..c89a44a --- /dev/null +++ b/Chapter5/BiTree/bitree.cpp @@ -0,0 +1,129 @@ +#include//cout,cin +#include +using namespace std; +#include"bitree.h" + +//测试参考数据 +string fbt = "a b d # # e # # c f # # g # #"; // 满二叉树最后一层每个叶结点后有两个# +string cbt = "a b d # # e # # c # #"; // 完全二叉树每个叶结点后有两个# +string gbt = "a b # d # # c e # # #"; // 一般二叉树 +string obt = "a b c d # # # # #"; // 左斜树1 + + +void dispmenu() +{ //显示主菜单 + cout << endl; + cout << "1-创建二叉树\n"; + cout << "2-先序递归遍历二叉树\n"; + cout << "3-中序递归遍历二叉树\n"; + cout << "4-后序递归遍历二叉树\n"; + cout << "5-层序遍历二叉树\n"; + cout << "6-先序非递归遍历二叉树\n"; + cout << "7-中序非递归遍历二叉树\n"; + cout << "8-后序非递归遍历二叉树\n"; + cout << "9-结点查询\n"; + cout << "10-求二叉树高度\n"; + cout << "11-求二叉树结点个数\n"; + cout << "12-显示二叉树\n"; + cout << "0 -退出\n"; +} + +int main() +{ + int level; + BTNode* bt; + + system("cls"); // 清屏 + + int choice; + do + { + dispmenu(); // 显示主菜单 + cout << "Enter choice(1~12,0 退出):"; + cin >> choice; + switch (choice) + { + case 1: // 创建二叉树 + cout << "测试参考数据:" << endl; + cout << "满二叉树:" << fbt << endl; + cout << "完全二叉树:" << cbt << endl; + cout << "一般二叉树:" << gbt << endl; + cout << "左斜二叉树:" << obt << endl; + cout << "请按先序序列的顺序输入二叉树,#为空指针域标志:" << endl; + CreateBiTree(bt); + break; + case 2: // 先序递归遍历二叉树 + cout << "先序遍历序列为:" << endl; + PreOrDerBiTree(bt); + break; + case 3: // 中序递归遍历二叉树 + cout << "中序遍历序列为:" << endl; + InOrDerBiTree(bt); + cout << endl; + break; + case 4: // 后序递归遍历二叉树 + cout << "后序遍历序列为:" << endl; + PostOrDerBiTree(bt); + cout << endl; + break; + case 5: // 层序遍历二叉树 + cout << "层序遍历序列为:" << endl; + cout << endl; + LevelBiTree(bt); + break; + case 6: // 先序非递归遍历二叉树 + cout << "先序非递归遍历序列为:" << endl; + PreOrderBiTree_N(bt); + cout << endl; + break; + case 7: // 中序非递归遍历二叉树 + cout << "中序非递归遍历序列为:" << endl; + InOrderBiTree_N(bt); + cout << endl; + break; + case 8: // 后序非递归遍历二叉树 + cout << "后序非递归遍历序列为:" << endl; + cout << endl; + PostOrderBiTree_N(bt); + break; + case 9: // 结点查询 + char e; + BTNode* p; + cout << "输入要查询的结点值:" << endl; + cin >> e; + p = Search(bt, e); + if (p) + { + cout << "找到!"; + cout << p->data << endl; + } + else + cout << "未找到!" << endl; + cout << endl; + break; + case 10: // 求二叉树高度 + cout << "二叉树高度为:" << Depth(bt) << endl; + cout << endl; + break; + case 11: //求二叉树结点个数 + cout << "二叉树结点数为:" << NodeCount(bt) << endl; + cout << endl; + break; + case 12: // 显示二叉树 + cout << "2-显示二叉树" << endl; + level = 1; + DispBiTree(bt, level); + cout << endl; + break; + case 0: // 退出 + DestroyBiTree(bt); + cout << "结束运行Bye-Bye!" << endl; + break; + default: // 无效选择 + cout << "Invalid choice\n"; + break; + } + } while (choice != 0); + + return 0; +} \ No newline at end of file diff --git a/Chapter5/BiTree/bitree.h b/Chapter5/BiTree/bitree.h new file mode 100644 index 0000000..dd9d543 --- /dev/null +++ b/Chapter5/BiTree/bitree.h @@ -0,0 +1,421 @@ +template +struct BTNode +{ + DT data; //数据域 + BTNode* lchild; //指向左子树的指针 + BTNode* rchild; //指向右子树的指针 +}; + +//队列工具 +template +struct SqQueue // 顺序队类 +{ + BTNode
** base; // 队列首址 + int front; // 队头指针 + int rear; // 队尾指针 + int queuesize; // 队容量 +}; + +//栈 +template +struct SqStack // 顺序栈 +{ + BTNode
** base; // 栈首址 + int top; // 栈顶指针 + int stacksize; // 栈容量 +}; + +//算法5.1 先序遍历递归算法 +template +void PreOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + cout << bt->data << ' '; //输出结点上的数据 + PreOrDerBiTree(bt->lchild); //递归的调用前序遍历左子树 + PreOrDerBiTree(bt->rchild); //递归的调用前序遍历右子树 + } + return; +} + +//算法5.2 中序遍历递归算法 +template +void InOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + InOrDerBiTree(bt->lchild); //递归的调用中序遍历左子树 + cout << bt->data << ' '; //输出结点上的数据 + InOrDerBiTree(bt->rchild); //递归的调用中序遍历右子树 + } + return; +} + +//算法5.3 后序遍历递归算法 +template +void PostOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + PostOrDerBiTree(bt->lchild); //递归的调用后序遍历左子树 + PostOrDerBiTree(bt->rchild); //递归的调用后序遍历右子树 + cout << bt->data << ' '; //输出结点上的数据 + } + return; +} + + +//算法5.4 层序遍历算法 +template +void LevelBiTree(BTNode
* bt) +{ + SqQueue
Q; // 创建一个队 + int m = 20; + InitQueue(Q, m); + BTNode
* p; + p = bt; + if (p) EnQueue(Q, p); // 树非空,入队 + while (!QueueEmpty(Q)) // 队非空 + { + DeQueue(Q, p); // 出队 + cout << p->data; // 访问 + if (p->lchild != NULL) // 有左孩子 + EnQueue(Q, p->lchild); // 左孩子入队 + if (p->rchild != NULL) // 有右孩子 + EnQueue(Q, p->rchild); // 右孩子入队 + } + DestroyQueue(Q); // 销毁队列 +} + + +//算法5.5 先序非遍历递归算法 +template +void PreOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + p = bt; + while (p != NULL || !StackEmpty(S)) // 树非空或栈非空 + { + while (p != NULL) // 结点非空 + { + cout << p->data << ' '; // 访问结点 + Push(S, p); // 入栈 + p = p->lchild; // 转左子树 + } + if (!StackEmpty(S)) // 栈非空 + { + Pop(S, p); // 出栈 + p = p->rchild; // 转出栈结点的右子树 + } + } + DestroyStack(S); //销毁栈 +} + + +//算法5.6 中序非遍历递归算法 +template +void InOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建一个栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + p = bt; + while (p != NULL || !StackEmpty(S)) // 结点非空或栈非空 + { + while (p != NULL) // 结点非空 + { + Push(S, p); // 入栈 + p = p->lchild; // 转出栈结点右子树 + } + if (!StackEmpty(S)) // 栈非空 + { + Pop(S, p); // 出栈 + cout << p->data << ' '; // 访问出栈结点 + p = p->rchild; // 转出栈结点的右子树 + } + } + DestroyStack(S); // 销毁栈 +} + + + +//算法5.7 后序非遍历递归算法 +template +void PostOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建一个栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + BTNode
* r; + p = bt; + bool flag; + do + { + while (p) // 结点非空 + { + Push(S, p); // 结点入栈 + p = p->lchild; // 转左子树 + } + r = NULL; // 指向刚被访问点,初值为空 + flag = true; // true表示处理栈顶结点 + while (!StackEmpty(S) && flag) // 栈非空且当前处理的是栈顶结点 + { + GetTop(S, p); // 获取栈顶元素 + if (p->rchild == r) // 如果 当前结点是栈元素的右孩子 + { + cout << p->data << ' '; // 访问栈顶元素 + Pop(S, p); // 出栈 + r = p; // r指向被访问结点 + } + else // 否则 + { + p = p->rchild; // 转栈顶元素右孩子 + flag = false; // 处理非栈顶结点 + } + } + } while (!StackEmpty(S)); // 栈非空,循环 + cout << endl; + DestroyStack(S); // 销毁栈 +} + + +//算法5.8 创建二叉树 +template +void CreateBiTree(BTNode
*& bt) +{ + char ch; + cin >> ch; // 输入根结点的数据 + if (ch == '#') // # 表示指针为空,说明树为空 + bt = NULL; + else + { + bt = new BTNode
; // 申请内存 + if (!bt) + { + cout << "申请内存失败!" << endl; + exit(-1); // 申请内存失败退出 + } + bt->data = ch; + CreateBiTree(bt->lchild); // 创建根结点左子树 + CreateBiTree(bt->rchild); // 创建根结点右子树 + } + return; +} + + +//算法5.9 销毁二叉树 +template +void DestroyBiTree(BTNode
*& bt) +{ + if (bt) // 树非空 + { + DestroyBiTree(bt->lchild); // 销毁左子树 + DestroyBiTree(bt->rchild); // 销毁右子树 + delete bt; + } +} + + +//算法5.10 结点查找 + +template +BTNode
* Search(BTNode
* bt, DT e) // 查找值为e的元素 +{ + BTNode
* p; + if (bt == NULL) // 结点为空,返回 + return NULL; + else if (bt->data == e) // 找到,返回结点指针 + return bt; + else // 结点值不为e + { + p = Search(bt->lchild, e); // 在左子树上查找 + if (p != NULL) // 找到 + return p; // 返回结点指针 + else // 未找到 + return Search(bt->rchild, e); // 转右子树上查找 + } +} + +//算法5.11 求树深 +template +int Depth(BTNode
* bt) +{ + int hl, hr; + if (bt == NULL) // 树空 + return 0; // 深度为0 + else // 树非空 + { + + hl = Depth(bt->lchild); // 求左子树深度 + hr = Depth(bt->lchild); // 求右子树深度 + if (hl > hr) // 左子树高 + return hl + 1; // 树高为左子树高加1 + else return hr + 1; // 左子树高,树高为左子树高加1 + } +} + + +//算法5.12 结点计数 +template +int NodeCount(BTNode
* bt) +{ + if (bt == NULL) // 空树,结点数为0 + return 0; + else // 非空树,结点数为左、右子树结点数的和加1 + return NodeCount(bt->lchild) + NodeCount(bt->rchild) + 1; +} + +template +void DispBiTree(BTNode
* bt, int level) // 显示树 +{ + if (bt) //空二叉树不显示 + { + DispBiTree(bt->rchild, level + 1); //显示右子树 + cout << endl; //显示新行 + for (int i = 0; i < level - 1; i++) + cout << " "; //确保在第level列显示节点 + cout << bt->data; //显示节点 + DispBiTree(bt->lchild, level + 1); //显示左子树 + cout << endl; + }//if +} + + +template +int leftCount(BTNode
* bt) +{ + if (bt->lchild == NULL && bt->rchild == NULL) // 空树,结点数为0 + return 0; + else // 非空树,结点数为左、右子树结点数的和加1 + return NodeCount(bt->lchild) + NodeCount(bt->rchild) + 1; +} + + +//【算法3.14】 初始化队列 +template +void InitQueue(SqQueue
& Q, int m) +{ + Q.base = new BTNode
*[m]; // 申请队列空间 + if (Q.base == NULL) // 申请空间失败 + { + cout << "未创建成功!"; + exit(1); // 退出 + } + Q.front = Q.rear = 0; // 设置队列属性 + Q.queuesize = m; +} + + +//算法3.15】 销毁列列 +template +void DestroyQueue(SqQueue
& Q) +{ + delete[] Q.base; // 释放队列空间 + Q.front = Q.rear = 0; // 设置队列属性 + Q.queuesize = 0; +} + + +//【算法3.16】 入队 +template +bool EnQueue(SqQueue
& Q, BTNode
* e) +{ + if ((Q.rear + 1) % Q.queuesize == Q.front) // 队满 + return false; // 返回false + Q.base[Q.rear] = e; // 出队 + Q.rear = (Q.rear + 1) % Q.queuesize; // 修改队列属性 + return true; // 返回true +} + +//【算法3.17】 出队 +template +bool DeQueue(SqQueue
& Q, BTNode
*& e) +{ + if (Q.front == Q.rear) // 队空 + return false; + e = Q.base[Q.front]; + Q.front = (Q.front + 1) % Q.queuesize; + return true; // 删除成功,返回true +} + +// 测队空 +template +bool QueueEmpty(SqQueue
Q) +{ + if (Q.front == Q.rear) // 队空 + return true; // 返回true + else // 队不空 + return false; // 返回false +} + +//【算法3.1】 初始化栈 +template +void InitStack(SqStack
& S, int m) +{ + S.base = new BTNode
*[m]; // 申请栈空间 + if (S.base == NULL) + { + cout << "未创建成功!"; + exit(1); + } + S.top = -1; // 空栈 + S.stacksize = m; // 栈容量为m +} + + +//算法3.2】 销毁栈 +template +void DestroyStack(SqStack
& S)//析构函数 +{ + delete[] S.base; //释放栈空间 + S.top = -1; + S.stacksize = 0; +} + + +//【算法3.3】 +template +bool Push(SqStack
& S, BTNode
* e) +{ + if (S.top == S.stacksize - 1) // 栈满,不能插入 + return false; + S.top++; + S.base[S.top] = e; + return true; // 插入成功,返回true +} + +//【算法3.4】 出栈 +template +bool Pop(SqStack
& S, BTNode
*& e) +{ + if (S.top == -1) //栈空 + return false; + e = S.base[S.top]; + S.top--; + return true; // 出栈成功,返回true +} + +template // 获取栈元素 +bool GetTop(SqStack
& S, BTNode
*& e) +{ + if (S.top == -1) // 栈空,返回false + return false; + e = S.base[S.top]; // 取栈元素 + return true; // 返回true +} + + +// 测栈空 +template +bool StackEmpty(SqStack
S) +{ + if (S.top == -1) // 栈空,返回true + return true; + else // 栈非空,返回false + return false; +} \ No newline at end of file diff --git a/Chapter5/Chapter5.sln b/Chapter5/Chapter5.sln new file mode 100644 index 0000000..1e0c50a --- /dev/null +++ b/Chapter5/Chapter5.sln @@ -0,0 +1,51 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34701.34 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BiTree", "BiTree\BiTree.vcxproj", "{904CFCDF-DA23-415A-8D68-8E51AD913458}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Huffmn", "Huffmn\Huffmn.vcxproj", "{A456A451-7570-4D79-9836-04559D3E944B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThrBiTree", "ThrBiTree\ThrBiTree.vcxproj", "{37EF98CA-2156-4ECB-A15D-52041DBAC78C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Debug|x64.ActiveCfg = Debug|x64 + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Debug|x64.Build.0 = Debug|x64 + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Debug|x86.ActiveCfg = Debug|Win32 + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Debug|x86.Build.0 = Debug|Win32 + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Release|x64.ActiveCfg = Release|x64 + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Release|x64.Build.0 = Release|x64 + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Release|x86.ActiveCfg = Release|Win32 + {904CFCDF-DA23-415A-8D68-8E51AD913458}.Release|x86.Build.0 = Release|Win32 + {A456A451-7570-4D79-9836-04559D3E944B}.Debug|x64.ActiveCfg = Debug|x64 + {A456A451-7570-4D79-9836-04559D3E944B}.Debug|x64.Build.0 = Debug|x64 + {A456A451-7570-4D79-9836-04559D3E944B}.Debug|x86.ActiveCfg = Debug|Win32 + {A456A451-7570-4D79-9836-04559D3E944B}.Debug|x86.Build.0 = Debug|Win32 + {A456A451-7570-4D79-9836-04559D3E944B}.Release|x64.ActiveCfg = Release|x64 + {A456A451-7570-4D79-9836-04559D3E944B}.Release|x64.Build.0 = Release|x64 + {A456A451-7570-4D79-9836-04559D3E944B}.Release|x86.ActiveCfg = Release|Win32 + {A456A451-7570-4D79-9836-04559D3E944B}.Release|x86.Build.0 = Release|Win32 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Debug|x64.ActiveCfg = Debug|x64 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Debug|x64.Build.0 = Debug|x64 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Debug|x86.ActiveCfg = Debug|Win32 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Debug|x86.Build.0 = Debug|Win32 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Release|x64.ActiveCfg = Release|x64 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Release|x64.Build.0 = Release|x64 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Release|x86.ActiveCfg = Release|Win32 + {37EF98CA-2156-4ECB-A15D-52041DBAC78C}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9F80D9BF-39B0-44C0-A084-A3293924BB63} + EndGlobalSection +EndGlobal diff --git a/Chapter1/app1-4/app1-4.vcxproj b/Chapter5/Huffmn/Huffmn.vcxproj similarity index 96% rename from Chapter1/app1-4/app1-4.vcxproj rename to Chapter5/Huffmn/Huffmn.vcxproj index 5fe8cd1..b8d0d55 100644 --- a/Chapter1/app1-4/app1-4.vcxproj +++ b/Chapter5/Huffmn/Huffmn.vcxproj @@ -18,16 +18,11 @@ x64 - - - true - - 17.0 Win32Proj - {7a2bd8ec-2595-4070-be3a-2bf2140848b2} - app14 + {a456a451-7570-4d79-9836-04559d3e944b} + Huffmn 10.0 @@ -131,6 +126,11 @@ true + + + false + + diff --git a/Chapter5/Huffmn/Huffmn.vcxproj.filters b/Chapter5/Huffmn/Huffmn.vcxproj.filters new file mode 100644 index 0000000..ad4ee75 --- /dev/null +++ b/Chapter5/Huffmn/Huffmn.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + \ No newline at end of file diff --git a/Chapter5/Huffmn/HumanTree.cpp b/Chapter5/Huffmn/HumanTree.cpp new file mode 100644 index 0000000..0a0fc98 --- /dev/null +++ b/Chapter5/Huffmn/HumanTree.cpp @@ -0,0 +1,165 @@ +#include"iostream" +#include +#include +using namespace std; + +struct HTNode +{ + int weight; // 权值,设为整型 + int parent; // 双亲位置 + int lchild; // 左孩子位置 + int rchild; // 右孩子位置 +}; + + +void select(HTNode* HT, int k, int& i1, int& i2) // 在前K-1个结点中选择权值最小的两个根结点i和j +{ + int m1, m2; + m1 = m2 = 32767; // + i1 = i2 = 0; + for (int j = 0; j < k; j++) + { + if (HT[j].weight < m1 && HT[j].parent == -1) + { + m2 = m1, i2 = i1; + m1 = HT[j].weight; + i1 = j; + } + else if (HT[j].weight < m2 && HT[j].parent == -1) + { + m2 = HT[j].weight; + i2 = j; + } + } +} +// 算法5.16 // 构造哈夫曼树 +void HuffmanTree(HTNode*& HT, int* w, int n) +{ // n是叶子结点的个数,w是叶子结点的权值数组 + HTNode* p; + int k, i; + int i1, i2; + p = HT; + for (i = 0; i < 2 * n - 1; i++) + { // 设置初始状态,所有结点的指针为空 + HT[i].weight = 0; + HT[i].parent = -1; + HT[i].lchild = -1; + HT[i].rchild = -1; + } + for (i = 0; i < n; i++) + { // 前n个结点的权值分别为个结点的权值 + HT[i].weight = w[i]; + } + for (k = n; k < 2 * n - 1; k++) + { // 构造最优二叉树 + select(HT, k, i1, i2); // 在前K-1个结点中选择权值最小的两个根结点i1和i2 + HT[i1].parent = k; + HT[i2].parent = k; + HT[k].weight = HT[i1].weight + HT[i2].weight; + HT[k].lchild = i1; + HT[k].rchild = i2; + } +} + + +void DispHT(HTNode* HT, int n) // 显示哈夫曼树存储 +{ + HTNode* p; + p = HT; + cout << "k" << setw(7) << "Weight" << setw(7) << "parent" + << setw(7) << "lchild" << setw(7) << "rchild" << endl; + for (int k = 0; k < 2 * n - 1; k++) + { + cout << k << setw(7) << (p + k)->weight << setw(7) << (p + k)->parent + << setw(7) << (p + k)->lchild << setw(7) << (p + k)->rchild << endl; + } +} + +//算法5.17 // 构建哈夫曼编码 +void CreateHFCode(HTNode* HT, int n, char** HC) +{ + int i, start, c, f; + char* cd; + cd = new char[n]; + cd[n - 1] = '\0'; + for (i = 0; i < n; i++) + { + start = n - 1; + c = i; + f = HT[i].parent; + while (f != -1) + { + if (HT[f].lchild == c) + cd[--start] = '0'; + else + cd[--start] = '1'; + c = f; f = HT[f].parent; + } + cout << endl; + HC[i] = new char[n - start]; + HC[i] = &cd[start]; + int j = 0; + while (HC[i][j] != '\0') // 显示编码 + { + cout << HC[i][j]; + j++; + } + + } + delete cd; + cout << endl; +} + + +int op; + +int main() +{ + int* w; // 权值数组 + int n; // 权值个数 + int i; // 工作变量 + HTNode* HT; // 哈夫曼树 + char** HC; + do + { + cout << "1-输入结点权值" << endl; + cout << "2-生成最优二叉树" << endl; + cout << "3-求哈夫曼编码" << endl; + cout << "4-退出程序" << endl; + cout << "请选择操作(1~4):"; + cout << "\b\b"; + cin >> op; + switch (op) + { + case 1: + cout << "测试案例" << endl; + cout << "7,5,2,3,5,6" << endl; + cout << "请输入结点的个数:"; + cin >> n; + w = new int[n]; + cout << "请依次输入权值:" << endl; + for (i = 0; i < n; i++) + { + cout << "请输入第" << i + 1 << "个权值:"; + cin >> w[i]; + } + break; + case 2: + HT = new HTNode[2 * n - 1]; // 申请最优二叉树存储空间 + HuffmanTree(HT, w, n); + cout << "创建的哈夫曼树为:\n"; + DispHT(HT, n); + system("pause"); + break; + case 3: + HC = new char* [n]; // 存储哈示曼编码 + cout << "哈夫曼编码为:\n"; + CreateHFCode(HT, n, HC); + break; + case 4: + cout << "结束运行,Bye-Bye!" << endl; + break; + } + } while (op != 4); + return 0; +} \ No newline at end of file diff --git a/Chapter5/ThrBiTree/ThrBiTree.cpp b/Chapter5/ThrBiTree/ThrBiTree.cpp new file mode 100644 index 0000000..0680867 --- /dev/null +++ b/Chapter5/ThrBiTree/ThrBiTree.cpp @@ -0,0 +1,222 @@ +#include//cout,cin +#include +using namespace std; + +template +struct ThrBTNode +{ + DT data; // 数据域 + int lflag; // 左标志域 + int rflag; // 右标志域 + ThrBTNode* lchild; // 左指针域 + ThrBTNode* rchild; // 右指针域 +}; + + +template // 创建二叉树 +void CreateBiTree(ThrBTNode
*& bt) +{ // 按先序序列的顺序输入二叉树,#为空指针域标志; + char ch; + cin >> ch; // 输入根结点的数据 + if (ch == '#') // # 表示指针为空,说明树为空 + bt = NULL; + else + { + bt = new ThrBTNode
; // 新建结点 + if (!bt) + { + cout << "申请内存失败!" << endl; + exit(-1); // 申请内存失败退出 + } + bt->lflag = 0; // 非线索 + bt->rflag = 0; // 非线索 + bt->data = ch; + CreateBiTree(bt->lchild); // 递归创建根结点左子树 + CreateBiTree(bt->rchild); // 递归创建根结点右子树 + } + return; +} + +ThrBTNode* pre; + +//算法5.13 中序线索化二叉树 +template +void InThread(ThrBTNode
*& p) +{ + + if (p != NULL) // 结点非空 + { + InThread(p->lchild); // 中序线索化左子树 + if (p->lchild == NULL) // 结点无左孩子 + { + p->lflag = 1; // 设置前驱线索标识 + p->lchild = pre; // 左孩子指向结点遍历前驱 + } + if (pre->rchild == NULL) // 结点无右孩子 + { + pre->rflag = 1; // 设置后继线索标识 + pre->rchild = p; // 右孩子指向结点遍历后继 + } + pre = p; // 前驱指向当前结点 + InThread(p->rchild); // 中序线索化右子树 + } +} + + +template // 构建线索二叉树 +ThrBTNode
* CreateInThread(ThrBTNode
*& bt) +{ + ThrBTNode
* root; + root = new ThrBTNode
; // 创建头结点 + root->lflag = 0; + root->rflag = 1; + root->rchild = bt; + if (bt == NULL) + root->lchild = root; + else + { + root->lchild = bt; + pre = root; + InThread(bt); // 中序线索化二叉树 + pre->rchild = root; // 设置循环链表 + pre->rflag = 1; + root->rchild = pre; + } + return root; +} + + + + +//算法5.15 中序遍历中序线索二叉树 +template +void InThrBiTree(ThrBTNode
* bt) +{ + ThrBTNode
* p; + p = bt->lchild; // 从根结点开始 + while (p != bt) // 结点非空 + { + while (p->lflag == 0) // 有左孩子 + p = p->lchild; // 一路左行 + cout << p->data; // 访问结点 + while (p->rflag == 1 && p->rchild != bt) // 有后继线索且非空 + { + p = p->rchild; // 转向后继 + cout << p->data << " "; // 访问后继结点 + } + p = p->rchild; // 无后继线索,转向右子树 + } +} + +template // 显示线索二叉树 +void DispBiTree(ThrBTNode
* bt, int level) +{ + if (bt) // 空二叉树不显示 + { + DispBiTree(bt->rchild, level + 1); // 显示右子树 + cout << endl; // 显示新行 + for (int i = 0; i < level - 1; i++) + cout << " "; // 确保在第level列显示节点 + cout << bt->data; // 显示节点 + DispBiTree(bt->lchild, level + 1); // 显示左子树 + cout << endl; + }//if +}//DisplayBTree + +//算法5.9 销毁二叉树 +template +void DestroyThrBiTree(ThrBTNode
*& bt) +{ + if (bt) + { + DestroyThrBiTree(bt->lchild); + DestroyThrBiTree(bt->rchild); + delete bt; + } +} + +void dispmenu() +{ // 显示主菜单 + cout << endl; + cout << "1-创建二叉树\n"; + //cout<<"2-先序线索化二叉树的先序遍历\n"; + //cout<<"3-先序遍历先序线索化二叉树\n"; + cout << "4-中序线索化二叉树\n"; + cout << "5-中序遍历中序线索二叉树\n"; + cout << "6-显示二叉树\n"; + cout << "7-退出\n"; +} + +// 测试数据 +string fbt = "a b d # # e # # c f # # g # #"; // 满二叉树最后一层每个叶结点后有两个# +string cbt = "a b d # # e # # c # #"; // 完全二叉树每个叶结点后有两个# +string gbt = "a b # d # # c e # # #"; // 一般二叉树 +string obt = "a b c d # # # # #"; // 左斜树 + +int main() +{ + + //char pause; + int level; + ThrBTNode* bt; + + + system("cls"); // 清屏 + + int choice; + do + { + dispmenu(); //显示主菜单 + cout << "Enter choice(1~7):"; + cin >> choice; + switch (choice) + { + case 1: //创建二叉树 + cout << "测试数据参考:" << endl; + cout << "满二叉树:" << fbt << endl; + cout << "完全二叉树:" << cbt << endl; + cout << "一般二叉树:" << gbt << endl; + cout << "左斜二叉树:" << obt << endl; + cout << "请按先序序列的顺序输入二叉树,#为空指针域标志:" << endl; + CreateBiTree(bt); + break; + case 2://先序线索化二叉树 + + //PreThread(bt); + //cin.get(pause); + //system("pause"); + break; + case 3://先序遍历先线索化二叉树 + + //PreOrDerBiTree(bt); + //cin.get(pause); + //system("pause"); + //breCreateInThread(bt); + case 4: //中序线索化二叉树 + bt = CreateInThread(bt); + cout << "中序线索化成功!"; + cout << endl; + break; + case 5: //中序遍历中序线索二叉树 + cout << "中序遍历序列为:" << endl; + cout << endl; + InThrBiTree(bt); + break; + case 6: //显示二叉树 + cout << "2-显示二叉树" << endl; + level = 1; + DispBiTree(bt, level); + cout << endl; + break; + case 7://退出 + cout << "结束运行!" << endl; + DestroyThrBiTree(bt); + break; + default://非法选择 + cout << "Invalid choice\n"; + break; + } + } while (choice != 7); + + return 0; +} \ No newline at end of file diff --git a/Chapter5/ThrBiTree/ThrBiTree.vcxproj b/Chapter5/ThrBiTree/ThrBiTree.vcxproj new file mode 100644 index 0000000..2c70883 --- /dev/null +++ b/Chapter5/ThrBiTree/ThrBiTree.vcxproj @@ -0,0 +1,135 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {37ef98ca-2156-4ecb-a15d-52041dbac78c} + ThrBiTree + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + false + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/Chapter5/ThrBiTree/ThrBiTree.vcxproj.filters b/Chapter5/ThrBiTree/ThrBiTree.vcxproj.filters new file mode 100644 index 0000000..8bbed55 --- /dev/null +++ b/Chapter5/ThrBiTree/ThrBiTree.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + \ No newline at end of file diff --git a/Exercise/BiTreeExterned/BiTreeExterned.sln b/Exercise/BiTreeExterned/BiTreeExterned.sln new file mode 100644 index 0000000..0ec47fc --- /dev/null +++ b/Exercise/BiTreeExterned/BiTreeExterned.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BiTreeExterned", "BiTreeExterned.vcxproj", "{67DB3E23-69FE-496E-B980-2F234B1777BA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Debug|x64.ActiveCfg = Debug|x64 + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Debug|x64.Build.0 = Debug|x64 + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Debug|x86.ActiveCfg = Debug|Win32 + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Debug|x86.Build.0 = Debug|Win32 + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Release|x64.ActiveCfg = Release|x64 + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Release|x64.Build.0 = Release|x64 + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Release|x86.ActiveCfg = Release|Win32 + {67DB3E23-69FE-496E-B980-2F234B1777BA}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {313D7A25-E7B0-4ED7-BCA3-EFCA771BB40E} + EndGlobalSection +EndGlobal diff --git a/Exercise/BiTreeExterned/BiTreeExterned.vcxproj b/Exercise/BiTreeExterned/BiTreeExterned.vcxproj new file mode 100644 index 0000000..a4fe4ca --- /dev/null +++ b/Exercise/BiTreeExterned/BiTreeExterned.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {67db3e23-69fe-496e-b980-2f234b1777ba} + BiTreeExterned + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + false + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Exercise/BiTreeExterned/BiTreeExterned.vcxproj.filters b/Exercise/BiTreeExterned/BiTreeExterned.vcxproj.filters new file mode 100644 index 0000000..1c99778 --- /dev/null +++ b/Exercise/BiTreeExterned/BiTreeExterned.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + + + 头文件 + + + \ No newline at end of file diff --git a/Exercise/BiTreeExterned/bitree.cpp b/Exercise/BiTreeExterned/bitree.cpp new file mode 100644 index 0000000..580fb66 --- /dev/null +++ b/Exercise/BiTreeExterned/bitree.cpp @@ -0,0 +1,136 @@ +#include//cout,cin +#include +using namespace std; +#include"bitree.h" + +//测试参考数据 +string fbt = "a b d # # e # # c f # # g # #"; // 满二叉树最后一层每个叶结点后有两个# +string cbt = "a b d # # e # # c # #"; // 完全二叉树每个叶结点后有两个# +string gbt = "a b # d # # c e # # #"; // 一般二叉树 +string obt = "a b c d # # # # #"; // 左斜树1 + + +void dispmenu() +{ //显示主菜单 + cout << endl; + cout << "1-创建二叉树\n"; + cout << "2-先序递归遍历二叉树\n"; + cout << "3-中序递归遍历二叉树\n"; + cout << "4-后序递归遍历二叉树\n"; + cout << "5-层序遍历二叉树\n"; + cout << "6-先序非递归遍历二叉树\n"; + cout << "7-中序非递归遍历二叉树\n"; + cout << "8-后序非递归遍历二叉树\n"; + cout << "9-结点查询\n"; + cout << "10-求二叉树高度\n"; + cout << "11-求二叉树结点个数\n"; + cout << "12-显示二叉树\n"; + cout << "13-删除以值为x的结点的子树\n"; + cout << "0 -退出\n"; +} + +int main() +{ + int level; + BTNode* bt; + + system("cls"); // 清屏 + + int choice; + do + { + dispmenu(); // 显示主菜单 + cout << "Enter choice(1~12,0 退出):"; + cin >> choice; + switch (choice) + { + case 1: // 创建二叉树 + cout << "测试参考数据:" << endl; + cout << "满二叉树:" << fbt << endl; + cout << "完全二叉树:" << cbt << endl; + cout << "一般二叉树:" << gbt << endl; + cout << "左斜二叉树:" << obt << endl; + cout << "请按先序序列的顺序输入二叉树,#为空指针域标志:" << endl; + CreateBiTree(bt); + break; + case 2: // 先序递归遍历二叉树 + cout << "先序遍历序列为:" << endl; + PreOrDerBiTree(bt); + break; + case 3: // 中序递归遍历二叉树 + cout << "中序遍历序列为:" << endl; + InOrDerBiTree(bt); + cout << endl; + break; + case 4: // 后序递归遍历二叉树 + cout << "后序遍历序列为:" << endl; + PostOrDerBiTree(bt); + cout << endl; + break; + case 5: // 层序遍历二叉树 + cout << "层序遍历序列为:" << endl; + cout << endl; + LevelBiTree(bt); + break; + case 6: // 先序非递归遍历二叉树 + cout << "先序非递归遍历序列为:" << endl; + PreOrderBiTree_N(bt); + cout << endl; + break; + case 7: // 中序非递归遍历二叉树 + cout << "中序非递归遍历序列为:" << endl; + InOrderBiTree_N(bt); + cout << endl; + break; + case 8: // 后序非递归遍历二叉树 + cout << "后序非递归遍历序列为:" << endl; + cout << endl; + PostOrderBiTree_N(bt); + break; + case 9: // 结点查询 + char e; + BTNode* p; + cout << "输入要查询的结点值:" << endl; + cin >> e; + p = Search(bt, e); + if (p) + { + cout << "找到!"; + cout << p->data << endl; + } + else + cout << "未找到!" << endl; + cout << endl; + break; + case 10: // 求二叉树高度 + cout << "二叉树高度为:" << Depth(bt) << endl; + cout << endl; + break; + case 11: //求二叉树结点个数 + cout << "二叉树结点数为:" << NodeCount(bt) << endl; + cout << endl; + break; + case 12: // 显示二叉树 + cout << "2-显示二叉树" << endl; + level = 1; + DispBiTree(bt, level); + cout << endl; + break; + case 13: + cout << "输入结点的值:"; + char x; + cin >> x; + DelChildWithRootX(bt, x); + break; + case 0: // 退出 + DestroyBiTree(bt); + cout << "结束运行Bye-Bye!" << endl; + break; + default: // 无效选择 + cout << "Invalid choice\n"; + break; + } + } while (choice != 0); + + return 0; +} \ No newline at end of file diff --git a/Exercise/BiTreeExterned/bitree.h b/Exercise/BiTreeExterned/bitree.h new file mode 100644 index 0000000..ef78468 --- /dev/null +++ b/Exercise/BiTreeExterned/bitree.h @@ -0,0 +1,436 @@ +template +struct BTNode +{ + DT data; //数据域 + BTNode* lchild; //指向左子树的指针 + BTNode* rchild; //指向右子树的指针 +}; + +//队列工具 +template +struct SqQueue // 顺序队类 +{ + BTNode
** base; // 队列首址 + int front; // 队头指针 + int rear; // 队尾指针 + int queuesize; // 队容量 +}; + +//栈 +template +struct SqStack // 顺序栈 +{ + BTNode
** base; // 栈首址 + int top; // 栈顶指针 + int stacksize; // 栈容量 +}; + +//算法5.1 先序遍历递归算法 +template +void PreOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + cout << bt->data << ' '; //输出结点上的数据 + PreOrDerBiTree(bt->lchild); //递归的调用前序遍历左子树 + PreOrDerBiTree(bt->rchild); //递归的调用前序遍历右子树 + } + return; +} + +//算法5.2 中序遍历递归算法 +template +void InOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + InOrDerBiTree(bt->lchild); //递归的调用中序遍历左子树 + cout << bt->data << ' '; //输出结点上的数据 + InOrDerBiTree(bt->rchild); //递归的调用中序遍历右子树 + } + return; +} + +//算法5.3 后序遍历递归算法 +template +void PostOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + PostOrDerBiTree(bt->lchild); //递归的调用后序遍历左子树 + PostOrDerBiTree(bt->rchild); //递归的调用后序遍历右子树 + cout << bt->data << ' '; //输出结点上的数据 + } + return; +} + + +//算法5.4 层序遍历算法 +template +void LevelBiTree(BTNode
* bt) +{ + SqQueue
Q; // 创建一个队 + int m = 20; + InitQueue(Q, m); + BTNode
* p; + p = bt; + if (p) EnQueue(Q, p); // 树非空,入队 + while (!QueueEmpty(Q)) // 队非空 + { + DeQueue(Q, p); // 出队 + cout << p->data; // 访问 + if (p->lchild != NULL) // 有左孩子 + EnQueue(Q, p->lchild); // 左孩子入队 + if (p->rchild != NULL) // 有右孩子 + EnQueue(Q, p->rchild); // 右孩子入队 + } + DestroyQueue(Q); // 销毁队列 +} + + +//算法5.5 先序非遍历递归算法 +template +void PreOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + p = bt; + while (p != NULL || !StackEmpty(S)) // 树非空或栈非空 + { + while (p != NULL) // 结点非空 + { + cout << p->data << ' '; // 访问结点 + Push(S, p); // 入栈 + p = p->lchild; // 转左子树 + } + if (!StackEmpty(S)) // 栈非空 + { + Pop(S, p); // 出栈 + p = p->rchild; // 转出栈结点的右子树 + } + } + DestroyStack(S); //销毁栈 +} + + +//算法5.6 中序非遍历递归算法 +template +void InOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建一个栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + p = bt; + while (p != NULL || !StackEmpty(S)) // 结点非空或栈非空 + { + while (p != NULL) // 结点非空 + { + Push(S, p); // 入栈 + p = p->lchild; // 转出栈结点右子树 + } + if (!StackEmpty(S)) // 栈非空 + { + Pop(S, p); // 出栈 + cout << p->data << ' '; // 访问出栈结点 + p = p->rchild; // 转出栈结点的右子树 + } + } + DestroyStack(S); // 销毁栈 +} + + + +//算法5.7 后序非遍历递归算法 +template +void PostOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建一个栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + BTNode
* r; + p = bt; + bool flag; + do + { + while (p) // 结点非空 + { + Push(S, p); // 结点入栈 + p = p->lchild; // 转左子树 + } + r = NULL; // 指向刚被访问点,初值为空 + flag = true; // true表示处理栈顶结点 + while (!StackEmpty(S) && flag) // 栈非空且当前处理的是栈顶结点 + { + GetTop(S, p); // 获取栈顶元素 + if (p->rchild == r) // 如果 当前结点是栈元素的右孩子 + { + cout << p->data << ' '; // 访问栈顶元素 + Pop(S, p); // 出栈 + r = p; // r指向被访问结点 + } + else // 否则 + { + p = p->rchild; // 转栈顶元素右孩子 + flag = false; // 处理非栈顶结点 + } + } + } while (!StackEmpty(S)); // 栈非空,循环 + cout << endl; + DestroyStack(S); // 销毁栈 +} + + +//算法5.8 创建二叉树 +template +void CreateBiTree(BTNode
*& bt) +{ + char ch; + cin >> ch; // 输入根结点的数据 + if (ch == '#') // # 表示指针为空,说明树为空 + bt = NULL; + else + { + bt = new BTNode
; // 申请内存 + if (!bt) + { + cout << "申请内存失败!" << endl; + exit(-1); // 申请内存失败退出 + } + bt->data = ch; + CreateBiTree(bt->lchild); // 创建根结点左子树 + CreateBiTree(bt->rchild); // 创建根结点右子树 + } + return; +} + + +//算法5.9 销毁二叉树 +template +void DestroyBiTree(BTNode
*& bt) +{ + if (bt) // 树非空 + { + DestroyBiTree(bt->lchild); // 销毁左子树 + DestroyBiTree(bt->rchild); // 销毁右子树 + delete bt; + } +} + + +//算法5.10 结点查找 + +template +BTNode
* Search(BTNode
* bt, DT e) // 查找值为e的元素 +{ + BTNode
* p; + if (bt == NULL) // 结点为空,返回 + return NULL; + else if (bt->data == e) // 找到,返回结点指针 + return bt; + else // 结点值不为e + { + p = Search(bt->lchild, e); // 在左子树上查找 + if (p != NULL) // 找到 + return p; // 返回结点指针 + else // 未找到 + return Search(bt->rchild, e); // 转右子树上查找 + } +} + +//算法5.11 求树深 +template +int Depth(BTNode
* bt) +{ + int hl, hr; + if (bt == NULL) // 树空 + return 0; // 深度为0 + else // 树非空 + { + + hl = Depth(bt->lchild); // 求左子树深度 + hr = Depth(bt->lchild); // 求右子树深度 + if (hl > hr) // 左子树高 + return hl + 1; // 树高为左子树高加1 + else return hr + 1; // 左子树高,树高为左子树高加1 + } +} + + +//算法5.12 结点计数 +template +int NodeCount(BTNode
* bt) +{ + if (bt == NULL) // 空树,结点数为0 + return 0; + else // 非空树,结点数为左、右子树结点数的和加1 + return NodeCount(bt->lchild) + NodeCount(bt->rchild) + 1; +} + +template +void DispBiTree(BTNode
* bt, int level) // 显示树 +{ + if (bt) //空二叉树不显示 + { + DispBiTree(bt->rchild, level + 1); //显示右子树 + cout << endl; //显示新行 + for (int i = 0; i < level - 1; i++) + cout << " "; //确保在第level列显示节点 + cout << bt->data; //显示节点 + DispBiTree(bt->lchild, level + 1); //显示左子树 + cout << endl; + }//if +} + +template +void DelChildWithRootX(BTNode
*& bt, DT x) { + if (bt == NULL) return; + else { + if (bt->data == x) { + DestroyBiTree(bt); + bt = NULL; + return; + } + else { + DelChildWithRootX(bt->lchild, x); + DelChildWithRootX(bt->rchild, x); + } + } +} + +template +int leftCount(BTNode
* bt) +{ + if (bt->lchild == NULL && bt->rchild == NULL) // 空树,结点数为0 + return 0; + else // 非空树,结点数为左、右子树结点数的和加1 + return NodeCount(bt->lchild) + NodeCount(bt->rchild) + 1; +} + + +//【算法3.14】 初始化队列 +template +void InitQueue(SqQueue
& Q, int m) +{ + Q.base = new BTNode
*[m]; // 申请队列空间 + if (Q.base == NULL) // 申请空间失败 + { + cout << "未创建成功!"; + exit(1); // 退出 + } + Q.front = Q.rear = 0; // 设置队列属性 + Q.queuesize = m; +} + + +//算法3.15】 销毁列列 +template +void DestroyQueue(SqQueue
& Q) +{ + delete[] Q.base; // 释放队列空间 + Q.front = Q.rear = 0; // 设置队列属性 + Q.queuesize = 0; +} + + +//【算法3.16】 入队 +template +bool EnQueue(SqQueue
& Q, BTNode
* e) +{ + if ((Q.rear + 1) % Q.queuesize == Q.front) // 队满 + return false; // 返回false + Q.base[Q.rear] = e; // 出队 + Q.rear = (Q.rear + 1) % Q.queuesize; // 修改队列属性 + return true; // 返回true +} + +//【算法3.17】 出队 +template +bool DeQueue(SqQueue
& Q, BTNode
*& e) +{ + if (Q.front == Q.rear) // 队空 + return false; + e = Q.base[Q.front]; + Q.front = (Q.front + 1) % Q.queuesize; + return true; // 删除成功,返回true +} + +// 测队空 +template +bool QueueEmpty(SqQueue
Q) +{ + if (Q.front == Q.rear) // 队空 + return true; // 返回true + else // 队不空 + return false; // 返回false +} + +//【算法3.1】 初始化栈 +template +void InitStack(SqStack
& S, int m) +{ + S.base = new BTNode
*[m]; // 申请栈空间 + if (S.base == NULL) + { + cout << "未创建成功!"; + exit(1); + } + S.top = -1; // 空栈 + S.stacksize = m; // 栈容量为m +} + + +//算法3.2】 销毁栈 +template +void DestroyStack(SqStack
& S)//析构函数 +{ + delete[] S.base; //释放栈空间 + S.top = -1; + S.stacksize = 0; +} + + +//【算法3.3】 +template +bool Push(SqStack
& S, BTNode
* e) +{ + if (S.top == S.stacksize - 1) // 栈满,不能插入 + return false; + S.top++; + S.base[S.top] = e; + return true; // 插入成功,返回true +} + +//【算法3.4】 出栈 +template +bool Pop(SqStack
& S, BTNode
*& e) +{ + if (S.top == -1) //栈空 + return false; + e = S.base[S.top]; + S.top--; + return true; // 出栈成功,返回true +} + +template // 获取栈元素 +bool GetTop(SqStack
& S, BTNode
*& e) +{ + if (S.top == -1) // 栈空,返回false + return false; + e = S.base[S.top]; // 取栈元素 + return true; // 返回true +} + + +// 测栈空 +template +bool StackEmpty(SqStack
S) +{ + if (S.top == -1) // 栈空,返回true + return true; + else // 栈非空,返回false + return false; +} \ No newline at end of file diff --git a/Del_e_in_Linear_List/Del_e_in_Linear_List.sln b/Exercise/Del_e_in_Linear_List/Del_e_in_Linear_List.sln similarity index 100% rename from Del_e_in_Linear_List/Del_e_in_Linear_List.sln rename to Exercise/Del_e_in_Linear_List/Del_e_in_Linear_List.sln diff --git a/Del_e_in_Linear_List/Linked_List/LinkList.h b/Exercise/Del_e_in_Linear_List/Linked_List/LinkList.h similarity index 100% rename from Del_e_in_Linear_List/Linked_List/LinkList.h rename to Exercise/Del_e_in_Linear_List/Linked_List/LinkList.h diff --git a/Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj b/Exercise/Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj similarity index 100% rename from Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj rename to Exercise/Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj diff --git a/Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj.filters b/Exercise/Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj.filters similarity index 100% rename from Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj.filters rename to Exercise/Del_e_in_Linear_List/Linked_List/Linked_List.vcxproj.filters diff --git a/Del_e_in_Linear_List/Linked_List/main.cpp b/Exercise/Del_e_in_Linear_List/Linked_List/main.cpp similarity index 100% rename from Del_e_in_Linear_List/Linked_List/main.cpp rename to Exercise/Del_e_in_Linear_List/Linked_List/main.cpp diff --git a/Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj b/Exercise/Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj similarity index 100% rename from Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj rename to Exercise/Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj diff --git a/Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj.filters b/Exercise/Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj.filters similarity index 100% rename from Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj.filters rename to Exercise/Del_e_in_Linear_List/Sequential_List/Sequential_List.vcxproj.filters diff --git a/Del_e_in_Linear_List/Sequential_List/SqList.h b/Exercise/Del_e_in_Linear_List/Sequential_List/SqList.h similarity index 100% rename from Del_e_in_Linear_List/Sequential_List/SqList.h rename to Exercise/Del_e_in_Linear_List/Sequential_List/SqList.h diff --git a/Del_e_in_Linear_List/Sequential_List/main.cpp b/Exercise/Del_e_in_Linear_List/Sequential_List/main.cpp similarity index 100% rename from Del_e_in_Linear_List/Sequential_List/main.cpp rename to Exercise/Del_e_in_Linear_List/Sequential_List/main.cpp diff --git a/Intersection_Union/Intersection_Union.sln b/Exercise/Intersection_Union/Intersection_Union.sln similarity index 100% rename from Intersection_Union/Intersection_Union.sln rename to Exercise/Intersection_Union/Intersection_Union.sln diff --git a/Intersection_Union/Linked_List/LinkList.h b/Exercise/Intersection_Union/Linked_List/LinkList.h similarity index 100% rename from Intersection_Union/Linked_List/LinkList.h rename to Exercise/Intersection_Union/Linked_List/LinkList.h diff --git a/Intersection_Union/Linked_List/Linked_List.vcxproj b/Exercise/Intersection_Union/Linked_List/Linked_List.vcxproj similarity index 100% rename from Intersection_Union/Linked_List/Linked_List.vcxproj rename to Exercise/Intersection_Union/Linked_List/Linked_List.vcxproj diff --git a/Intersection_Union/Linked_List/Linked_List.vcxproj.filters b/Exercise/Intersection_Union/Linked_List/Linked_List.vcxproj.filters similarity index 100% rename from Intersection_Union/Linked_List/Linked_List.vcxproj.filters rename to Exercise/Intersection_Union/Linked_List/Linked_List.vcxproj.filters diff --git a/Intersection_Union/Linked_List/main.cpp b/Exercise/Intersection_Union/Linked_List/main.cpp similarity index 100% rename from Intersection_Union/Linked_List/main.cpp rename to Exercise/Intersection_Union/Linked_List/main.cpp diff --git a/Intersection_Union/Sequential_List/Sequential_List.vcxproj b/Exercise/Intersection_Union/Sequential_List/Sequential_List.vcxproj similarity index 100% rename from Intersection_Union/Sequential_List/Sequential_List.vcxproj rename to Exercise/Intersection_Union/Sequential_List/Sequential_List.vcxproj diff --git a/Intersection_Union/Sequential_List/Sequential_List.vcxproj.filters b/Exercise/Intersection_Union/Sequential_List/Sequential_List.vcxproj.filters similarity index 100% rename from Intersection_Union/Sequential_List/Sequential_List.vcxproj.filters rename to Exercise/Intersection_Union/Sequential_List/Sequential_List.vcxproj.filters diff --git a/Intersection_Union/Sequential_List/SqList.h b/Exercise/Intersection_Union/Sequential_List/SqList.h similarity index 100% rename from Intersection_Union/Sequential_List/SqList.h rename to Exercise/Intersection_Union/Sequential_List/SqList.h diff --git a/Intersection_Union/Sequential_List/main.cpp b/Exercise/Intersection_Union/Sequential_List/main.cpp similarity index 100% rename from Intersection_Union/Sequential_List/main.cpp rename to Exercise/Intersection_Union/Sequential_List/main.cpp diff --git a/LinkListOperation/LinkList.h b/Exercise/LinkListOperation/LinkList.h similarity index 100% rename from LinkListOperation/LinkList.h rename to Exercise/LinkListOperation/LinkList.h diff --git a/LinkListOperation/LinkListOperation.sln b/Exercise/LinkListOperation/LinkListOperation.sln similarity index 100% rename from LinkListOperation/LinkListOperation.sln rename to Exercise/LinkListOperation/LinkListOperation.sln diff --git a/LinkListOperation/LinkListOperation.vcxproj b/Exercise/LinkListOperation/LinkListOperation.vcxproj similarity index 100% rename from LinkListOperation/LinkListOperation.vcxproj rename to Exercise/LinkListOperation/LinkListOperation.vcxproj diff --git a/LinkListOperation/LinkListOperation.vcxproj.filters b/Exercise/LinkListOperation/LinkListOperation.vcxproj.filters similarity index 100% rename from LinkListOperation/LinkListOperation.vcxproj.filters rename to Exercise/LinkListOperation/LinkListOperation.vcxproj.filters diff --git a/LinkListOperation/main.cpp b/Exercise/LinkListOperation/main.cpp similarity index 100% rename from LinkListOperation/main.cpp rename to Exercise/LinkListOperation/main.cpp diff --git a/Experiment/ExpReportTemplate.dotx b/Experiment/ExpReportTemplate.dotx new file mode 100644 index 0000000000000000000000000000000000000000..d92ed535dc88a9dec65da1cfcb14dc1d14084603 GIT binary patch literal 16941 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%0DnVEj6 zga4-n}KK5yVVDug|Ab3ue$)#sHXce;F+g_bUWQ8)j7t-oUD6AX|}NYk$C7 z{7Sy+?QNyY-?6@aRAT0HKOgGPR`o23GY6oLa3SYt1$8LrQZzJPX(rUtmKUdle>&^C zl0Qy?(%;b)>3C7ESV&t3zgz`-AxH4%tA=DnxZ*dx|Hot*w`BOD7f^LS163F4&#J3$ zYx~1K{#SE>Y74y5mAb807+<#|?(<`HaMaA!W5J4v#xyME^aA=NC;dfMgsdc^lZoyg zrk%Fk_AB1TMD5IO$8DS}x-5Yj)~r=r*emW}zdep{8mC@Yl~3ZoppCH?b6VS^=GPxN z-Rb9W{m7?B8b)OZo22R{jbYD$ZH=h$CD?RAImeJrG_yxlBf`>n5U$&hIiy^ z>^W5c=Dc1kStygQ8li0LC|Dm>cZ-UmnE{KjhE728S6f1%5A`Gs8qYOv?{_RlygMx> zgWZrWF*dx|i*Kf9Bro7E(K0J=gTg`K!b(3<*Aadze9ivesmX-GsG=p1=o$3WwU)w2&+tdYiA2x(Icxu!fW)%XOQ#R$i;RHaD|r-h5buk_KI@G=jfHHk z8&CSzP$vU6)T3#l-FvImECU|$FXGRT|72|)`MKPCfUkrSsI~+^mHn09{R71FpDgcx z@zp<7_m3icvKsIc$n>Ibkn0vcj03^z}=@oFAc<<%+N~ zhUME-ERAE)s>L%Vj!JN;QyFGD)|^;U%;`F{f4=JkU5zV22=Md7!clnQ-Q;GE$a86W z;{t>ARW!&M69cyB)1wh}L}{a&5Yq-^?|Nwo0H(#_YSw4OT0#1+4E}m#^Un;HfnENgOh0w#cf#Kfsr@1)1}10zc4X~$^1mJr_(co?vJ3QL z|F^>ezjOK>3;v6jFw(y`{T1f+7l7OE+$%*pQz{tCS@Y5dORcX+}tJ~f2@dWye*6@I7xJ#YAnUIU1j|0&*I zS;XIoe-Cee5uY;sdN+R#cK^oVw*c)I2OE}uarjHP_B;JwJ?~%CK!=76_$Ge$!+$6L ztM~I~@)*uPk^jpV`knf(3(=pcMY#X`2LEYUQjmrOh7v!bQWTJJAiPA1_s75g0b1`_ APyhe` literal 0 HcmV?d00001 diff --git a/Experiment/Experiment1/Report.docx b/Experiment/Experiment1/Report.docx new file mode 100644 index 0000000000000000000000000000000000000000..9db8ba53212b4cd973c65c564260d772aa025e8f GIT binary patch literal 35113 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 literal 0 HcmV?d00001 diff --git a/Experiment/Experiment1/Task1/Intersection_Union.sln b/Experiment/Experiment1/Task1/Intersection_Union.sln new file mode 100644 index 0000000..af7a094 --- /dev/null +++ b/Experiment/Experiment1/Task1/Intersection_Union.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34701.34 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sequential_List", "Sequential_List\Sequential_List.vcxproj", "{B4E4A6F7-1B97-421C-98BB-79482B2743FE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Linked_List", "Linked_List\Linked_List.vcxproj", "{B2EEF80B-772E-44E2-856D-C8DEF3242EE3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Debug|x64.ActiveCfg = Debug|x64 + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Debug|x64.Build.0 = Debug|x64 + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Debug|x86.ActiveCfg = Debug|Win32 + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Debug|x86.Build.0 = Debug|Win32 + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Release|x64.ActiveCfg = Release|x64 + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Release|x64.Build.0 = Release|x64 + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Release|x86.ActiveCfg = Release|Win32 + {B4E4A6F7-1B97-421C-98BB-79482B2743FE}.Release|x86.Build.0 = Release|Win32 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Debug|x64.ActiveCfg = Debug|x64 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Debug|x64.Build.0 = Debug|x64 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Debug|x86.ActiveCfg = Debug|Win32 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Debug|x86.Build.0 = Debug|Win32 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Release|x64.ActiveCfg = Release|x64 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Release|x64.Build.0 = Release|x64 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Release|x86.ActiveCfg = Release|Win32 + {B2EEF80B-772E-44E2-856D-C8DEF3242EE3}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {413D1D02-E71E-45AC-8680-BA6E93C42BA8} + EndGlobalSection +EndGlobal diff --git a/Experiment/Experiment1/Task1/Linked_List/LinkList.h b/Experiment/Experiment1/Task1/Linked_List/LinkList.h new file mode 100644 index 0000000..7914d52 --- /dev/null +++ b/Experiment/Experiment1/Task1/Linked_List/LinkList.h @@ -0,0 +1,253 @@ + +template +struct LNode //链表结点 +{ + DT data; //数据域,存储数据元素值 + LNode* next; //指针域,指向下一个结点 +}; + +//算法2.1 +template +bool PriorElem_e(LNode
* L, DT e, DT& pre_e) // 求值为e的元素前驱 +{ + int k; + k = LocateElem_e(L, e); // 1.获取e的位序k + if (k > 1) // 2.位序k大于1 + { + GetElem_i(L, k - 1, pre_e); // 第k-1个元素为e的前驱 + return true; + } + else // 3.元素e无前驱 + return false; // 返回false +} + +//【算法2.14】 创建空单链表 +template +bool InitList(LNode
*& L) +{ + L = new LNode
; // 1.创建头结点 + if (!L) exit(1); // 2.创建失败,退出 + L->next = NULL; // 3.创建成功 + return true; // 返回true +} + +//【算法2.15】 尾插法创建n的元素 +template +bool CreateList_1(LNode
*& L, int n) +{ + int i; + LNode
* p, * s; + p = L; //1.工作指针初始化,指向尾结点 + cout << "依次输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) // 2.按元素位序正序创建各结点 + { + s = new LNode
; // 2.1 新建一个结点s + if (!s) // 2.2 创建失败,返回false + return false; + cin >> s->data; // 2.3 输入结点值 + s->next = p->next; // 2.4 s 链在表尾 + p->next = s; + p = s; // 2.5 工作指针指向 s + } + return true; // 3.创建成功,返回true +} + +//【算法2.16】 头插法创建n个元素 +template +bool CreateList_2(LNode
* (&L), int n) +{ + int i; + LNode
* s; + cout << "逆序输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) // 1.按元素位序逆序创建各结点 + { + s = new LNode
; // 1.1 新建一个结点 s + if (!s) // 1.2 创建失败,返回false + return false; + cin >> s->data; // 1.3 输入结点值 + s->next = L->next; // 1.4 s 在头结点后 + L->next = s; + } + return true; // 1.创建成功,返回true +} + +//【算法2.17】 +template +void DestroyList(LNode
* (&L)) // 释放链表所占空间 +{ + LNode
* p; + while (L) // 1. 表非空,从头结点开始,依次释放结点 + { + p = L; // 1.1 处理表头结点 + L = L->next; // 1.2 头指针后移 + delete p; // 1.3 释放表头结点所占内存 + } + L = NULL; // 2.头指针指向空 +} + +//【算法2.18】 获取第i个元素 +template +bool GetElem_i(LNode
* L, int i, DT& e) +{ + LNode
* p; // 1.初始化 + p = L->next; // 1.1 设置工作指针,从首结点开始数结点 + int j = 1; // 1.2 计数器初始化 + while (p && j < i) // 2.定位到第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3 未找到,返回false + return false; + else // 4. 找到 + { + e = p->data; // 获取第i个元素值 + return true; // 返回true + } +} + +//【算法2.19】 查找值为e的元素位序 +template +int LocateElem_e(LNode
* L, DT e) +{ + + LNode
* p; // 1.初始化从首元开始查找 + p = L->next; // 1.1从首元开始查找 + int j = 1; // 1.2 计数器初值 + while (p && p->data != e) // 2.顺序查找 + { + p = p->next; // 2.1未找到指针后移 + j++; // 2.2 计数器增1 + } + if (p == NULL) // 3. 判断是否找到 + return 0; // 3.1末找到,返回0 + else + return j; // 3.2 找到,返回位序 +} + +//【算法2.20】 插入第i个元素 +template +bool InsertElem_i(LNode
*& L, int i, DT e) +{ + + int j = 0; + LNode
* p; // 1.初始化 + p = L; // 工作指针初始化 + while (p && j < i - 1) // 2. 定位到插入点前驱 + { + p = p->next; + j++; + } + if (!p || j > i - 1) // 3.判断定位是否成功: + return false; // 3.1 定位失败,不能插入 + else // 3.2 定位成功 + { + LNode
* s; + s = new LNode
; // 3.2.1建立新结点 + s->data = e; // 3.2.2新结点赋值 + s->next = p->next; // 3.2.3结点S链接到p结点之后 + p->next = s; + return true; // 3.2.4 插入成功,返回true + } + +} + +//【算法2.21】 删除第i个元素 +template +bool DeleElem_i(LNode
* (&L), int i) +{ + + LNode
* p, * q; //1.初始化:设置工作指针 + p = L; //查找从头结点开始 + int j = 0; //计数器初始化 + while (p->next && j < i - 1) //2.p定位到删除点的前驱 + { + p = p->next; + j++; + } + if (!p->next || j > i - 1) //3.删除位置不合理,不能删除 + return false; //返回false + else //4.删除操作 + { + q = p->next; //4.1暂存删除结点位置 + p->next = q->next; //4.2从链表中摘除删除结点 + delete q; + return true; //4.3删除成功,返回true + } +} + + +//【算法2.22】 修改第i个元素值 +template +bool PutElem_i(LNode
* (&L), int i, DT e) +{ + LNode
* p; // 1.初始化:设置工作指针 + p = L->next; // 从首结点开始,数结点 + int j = 1; // 计数器初始化 + while (p && j < i) // 2.查找第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3.元素不存在,返回false + return false; + else // 4.定位成功 + { + p->data = e; // 修改元素值 + return true; // 返回true + } +} + +// 释放链表所占空间 +template +void ClearList(LNode
* (&L)) +{ + + LNode
* p; + while (L->next) // 从首元结点开始,依次释放结点 + { + p = L->next; + L->next = p->next; + delete p; + } + cout << endl << "表已清空!" << endl; +} + + +//【算法2.23】 测表长 +template +int ListLength(LNode
* L) +{ // 1.初始化 + int len = 0; // 1.1 结点计数器赋初值0 + LNode
* p; // 1.2设置工作指针 + p = L; // 指向头结点 + while (p->next) // 2.数结点个数。有后继结点, + { + len++; p = p->next; // 结点数增1,指针后移 + } + return len; // 3.返回表长 +} + +// +template +bool ListEmpty(LNode
* L) //测表空 +{ + if (L->next == NULL) + return true; //空表,返回1 + else + return false; //不空,返回0 +} + + +//【算法2.24】 遍历表 +template +void DispList(LNode
* L) // 显示表内容 +{ + LNode
* p; // 1. 设置工作指针 + p = L; // 从首元结点开始遍历 + while (p->next) // 2.依次输出各结点值 + { + p = p->next; cout << p->data << "\t"; + + + } + cout << endl; +} diff --git a/Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj b/Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj new file mode 100644 index 0000000..26d5576 --- /dev/null +++ b/Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {b2eef80b-772e-44e2-856d-c8def3242ee3} + LinkedList + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj.filters b/Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj.filters new file mode 100644 index 0000000..08fad02 --- /dev/null +++ b/Experiment/Experiment1/Task1/Linked_List/Linked_List.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + + + 源文件 + + + \ No newline at end of file diff --git a/Experiment/Experiment1/Task1/Linked_List/main.cpp b/Experiment/Experiment1/Task1/Linked_List/main.cpp new file mode 100644 index 0000000..c089233 --- /dev/null +++ b/Experiment/Experiment1/Task1/Linked_List/main.cpp @@ -0,0 +1,80 @@ +#include +using namespace std; +#include "LinkList.h" +template +bool CreateListNoRepeat(LNode
*& L, int n) +{ + int i; + LNode
* p, * s; + p = L; + cout << "依次输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) + { + int temp; + cin >> temp; + if (LocateElem_e(L, temp)) i--; + else + { + s = new LNode
; + if (!s) return false; + s->data = temp; + s->next = p->next; + p->next = s; + p = s; + } + } + return true; +} +template +void Union(LNode
*& A, LNode
*& B, int length_a, int length_b) +{ + for (int i = 1; i <= length_b; ++i) // as "i = 0" is the head node + { + int temp; + GetElem_i(B, i, temp); // You should manually get the element instead of using B.elem[i] + if (LocateElem_e(A, temp) == 0) InsertElem_i(A, ++length_a, temp); // ++length_a to always insert at the end + } +} +template +void Intersection(LNode
*& A, LNode
*& B, int length_a) +{ + int k = 0; + for (int i = 1; i <= length_a; ++i) + { + int temp; + GetElem_i(A, i, temp); + if (LocateElem_e(B, temp) == 0) + { + DeleElem_i(A, i--); + length_a--; + } + } +} +int main() +{ + LNode* A; + LNode* B; + InitList(A); + InitList(B); + int length_a, length_b; + cout << "请输入集合A的元素个数: "; + cin >> length_a; + CreateListNoRepeat(A, length_a); + cout << "请输入集合B的元素个数: "; + cin >> length_b; + CreateListNoRepeat(B, length_b); + cout << "集合A: "; + DispList(A); + cout << "集合B: "; + DispList(B); + Union(A, B, length_a, length_b); // You should manually pass the length of the list instead of using A.length + cout << "A∪B: "; + DispList(A); + while (true) if (!DeleElem_i(A, length_a + 1)) break; // Delete elements after the original list A + Intersection(A, B, length_a); + cout << "A∩B: "; + DispList(A); + DestroyList(A); + DestroyList(B); + return 0; +} \ No newline at end of file diff --git a/Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj b/Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj new file mode 100644 index 0000000..f467086 --- /dev/null +++ b/Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {b4e4a6f7-1b97-421c-98bb-79482b2743fe} + SequentialList + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj.filters b/Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj.filters new file mode 100644 index 0000000..9cefb5b --- /dev/null +++ b/Experiment/Experiment1/Task1/Sequential_List/Sequential_List.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + + + 头文件 + + + \ No newline at end of file diff --git a/Experiment/Experiment1/Task1/Sequential_List/SqList.h b/Experiment/Experiment1/Task1/Sequential_List/SqList.h new file mode 100644 index 0000000..5dfd6e5 --- /dev/null +++ b/Experiment/Experiment1/Task1/Sequential_List/SqList.h @@ -0,0 +1,175 @@ +template +struct SqList // 顺序表 +{ + DT* elem; // 表首址 + int length; // 表长 + int size; // 表容量 +}; + +//算法2.1 +template +bool PriorElem_e(SqList
L, DT e, DT& pre_e) // 求值为e的元素前驱 +{ + int k; + k = LocateElem_e(L, e); // + if (k > 1) + { + GetElem_i(L, k - 1, pre_e); + return false; + } + else + return true; +} + +//【算法2.2】 初始化 +template +bool InitList(SqList
& L, int m) +{ + L.elem = new DT[m]; // 申请表空间 + if (L.elem == NULL) + { + cout << "未创建成功!"; // 申请不成功,退出 + exit(1); + } + L.length = 0; // 申请成功,属性赋值。空表,表长为0 + L.size = m; // 表容量为m + return true; +} + +//【算法2.3】 创建表元素 +template +bool CreateList(SqList
& L, int n) +{ + int i; + if (n > L.size) // 1.元素个数大于表容量,不能创建。 + { + cout << "元素个数大于表长,不能创建!" << endl; + return false; + } + cout << "请依次输入" << n << "个元素值:" << endl; // 2.依位序输入各元素值 + for (i = 1; i <= n; i++) + cin >> L.elem[i - 1]; + L.length = n; // 3.表长为创建的元素个数 + return true; +} + +//【算法2.4】 销毁顺序表 +template +void DestroyList(SqList
& L) +{ + delete[] L.elem; // 1.释放表空间 + L.length = 0; // 2.属性赋值 + L.size = 0; +} + +//【算法2.5】 获取第i个元素值 +template +bool GetElem_i(SqList
L, int i, DT& e) +{ + if (i<1 || i>L.length) // 1.位序不合理,返回false + { + cout << "该元素不存在!" << endl; + return false; + } + e = L.elem[i - 1]; // 2. 否则,获取第i个元素值 + return true; // 返回true +} + +//【算法2.6】 按值查找 +template +int LocateElem_e(SqList
L, DT e) +{ + for (int i = 1; i <= L.length; i++) // 顺序查找 + if (L.elem[i - 1] == e) // 1.找到 + return i; // 返回元素位序 + return 0; // 2.未找到,返回0 +} + +//【算法2.7】 +template +bool InsertElem_i(SqList
& L, int i, DT e) +{ + if (L.length >= L.size) // 1.表满,不能插入 + return false; + if (i<1 || i>L.length + 1) // 2.插入位置不合理,不能插入 + return false; + for (int j = L.length; j >= i; j--) // 3. an~ai依次后移 + L.elem[j] = L.elem[j - 1]; + L.elem[i - 1] = e; + L.length++; + return true; // 插入成功,返回true +} + +//【算法2.8】 删除第i个元素 +template +bool DeleElem_i(SqList
& L, int i) +{ + if (L.length == 0) // 1.表空,不能删除 + return false; + if (i<1 || i>L.length) // 2.删除位置不合理,不能插入 + return false; + for (int j = i; j < L.length; j++) // 3. ai+1~an依次前移 + L.elem[j - 1] = L.elem[j]; + L.length--; + return true; // 删除成功,返回true +} + + +//【算法2.9】 +template +bool PutElem(SqList
& L, int i, DT e) // 修改第i个元素的值 +{ + if (i<1 || i>L.length) // 1.位序不合理,不能修改, + return false; // 返回false + L.elem[i - 1] = e; // 2.重置第i个元素值 + return true; // 3.修改成功,返回true +} + +// 清空顺序表 +template +void ClearList(SqList
& L) +{ + L.length = 0; // 空表,表长为0 +} + + +// 测表长 +template +int ListLength(SqList
L) +{ + return L.length; +} + + +template +bool ListEmpty(SqList
L) // 测表空 +{ + if (L.length == 0) // 空表,返回true + return true; + else + return false; // 非空表,返回false +} + +template +bool ListFull(SqList
L) +{ + if (L.length == L.size) // 表满,返回true + return true; + else + return false; // 表不满,返回false +} + +//【算法2.10】 遍历输出 +template +void DispList(SqList
L) +{ + int i; + for (i = 1; i <= L.length; i++) // 依位序输出元素值 + { + cout << L.elem[i - 1] << "\t"; + + } + cout << endl; +} + + diff --git a/Experiment/Experiment1/Task1/Sequential_List/main.cpp b/Experiment/Experiment1/Task1/Sequential_List/main.cpp new file mode 100644 index 0000000..a1fbc2f --- /dev/null +++ b/Experiment/Experiment1/Task1/Sequential_List/main.cpp @@ -0,0 +1,64 @@ +#include +using namespace std; +#include "SqList.h" +template +bool CreateListNoRepeat(SqList
& L, int n) +{ + int i; + if (n > L.size) + { + cout << "元素个数大于表长,不能创建!" << endl; + return false; + } + cout << "请依次输入" << n << "个元素值:" << endl; + for (i = 1; i <= n; i++) + { + int temp; + cin >> temp; + if (LocateElem_e(L, temp) > 0) i--; + else L.elem[i - 1] = temp; + L.length++; + } + L.length = n; + return true; +} +template +void Union(SqList
& A, const SqList
& B) +{ + for (int i = 0; i < B.length; ++i) if (LocateElem_e(A, B.elem[i]) == 0) InsertElem_i(A, A.length + 1, B.elem[i]); +} +template +void Intersection(SqList
& A, const SqList
& B) +{ + int k = 0; + for (int i = 0; i < A.length; ++i) if (LocateElem_e(B, A.elem[i]) > 0) A.elem[k++] = A.elem[i]; + A.length = k; +} +int main() +{ + SqList A; + SqList B; + InitList(A, 32); + InitList(B, 32); + int length_a, length_b; + cout << "请输入集合A的元素个数: "; + cin >> length_a; + CreateListNoRepeat(A, length_a); + cout << "请输入集合B的元素个数: "; + cin >> length_b; + CreateListNoRepeat(B, length_b); + cout << "集合A: "; + DispList(A); + cout << "集合B: "; + DispList(B); + Union(A, B); + cout << "A∪B: "; + DispList(A); + A.length = length_a; // Reset A to its original length, no need to delete the elements + Intersection(A, B); + cout << "A∩B: "; + DispList(A); + DestroyList(A); + DestroyList(B); + return 0; +} \ No newline at end of file diff --git a/Experiment/Experiment1/Task2/LinkList.h b/Experiment/Experiment1/Task2/LinkList.h new file mode 100644 index 0000000..7914d52 --- /dev/null +++ b/Experiment/Experiment1/Task2/LinkList.h @@ -0,0 +1,253 @@ + +template +struct LNode //链表结点 +{ + DT data; //数据域,存储数据元素值 + LNode* next; //指针域,指向下一个结点 +}; + +//算法2.1 +template +bool PriorElem_e(LNode
* L, DT e, DT& pre_e) // 求值为e的元素前驱 +{ + int k; + k = LocateElem_e(L, e); // 1.获取e的位序k + if (k > 1) // 2.位序k大于1 + { + GetElem_i(L, k - 1, pre_e); // 第k-1个元素为e的前驱 + return true; + } + else // 3.元素e无前驱 + return false; // 返回false +} + +//【算法2.14】 创建空单链表 +template +bool InitList(LNode
*& L) +{ + L = new LNode
; // 1.创建头结点 + if (!L) exit(1); // 2.创建失败,退出 + L->next = NULL; // 3.创建成功 + return true; // 返回true +} + +//【算法2.15】 尾插法创建n的元素 +template +bool CreateList_1(LNode
*& L, int n) +{ + int i; + LNode
* p, * s; + p = L; //1.工作指针初始化,指向尾结点 + cout << "依次输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) // 2.按元素位序正序创建各结点 + { + s = new LNode
; // 2.1 新建一个结点s + if (!s) // 2.2 创建失败,返回false + return false; + cin >> s->data; // 2.3 输入结点值 + s->next = p->next; // 2.4 s 链在表尾 + p->next = s; + p = s; // 2.5 工作指针指向 s + } + return true; // 3.创建成功,返回true +} + +//【算法2.16】 头插法创建n个元素 +template +bool CreateList_2(LNode
* (&L), int n) +{ + int i; + LNode
* s; + cout << "逆序输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) // 1.按元素位序逆序创建各结点 + { + s = new LNode
; // 1.1 新建一个结点 s + if (!s) // 1.2 创建失败,返回false + return false; + cin >> s->data; // 1.3 输入结点值 + s->next = L->next; // 1.4 s 在头结点后 + L->next = s; + } + return true; // 1.创建成功,返回true +} + +//【算法2.17】 +template +void DestroyList(LNode
* (&L)) // 释放链表所占空间 +{ + LNode
* p; + while (L) // 1. 表非空,从头结点开始,依次释放结点 + { + p = L; // 1.1 处理表头结点 + L = L->next; // 1.2 头指针后移 + delete p; // 1.3 释放表头结点所占内存 + } + L = NULL; // 2.头指针指向空 +} + +//【算法2.18】 获取第i个元素 +template +bool GetElem_i(LNode
* L, int i, DT& e) +{ + LNode
* p; // 1.初始化 + p = L->next; // 1.1 设置工作指针,从首结点开始数结点 + int j = 1; // 1.2 计数器初始化 + while (p && j < i) // 2.定位到第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3 未找到,返回false + return false; + else // 4. 找到 + { + e = p->data; // 获取第i个元素值 + return true; // 返回true + } +} + +//【算法2.19】 查找值为e的元素位序 +template +int LocateElem_e(LNode
* L, DT e) +{ + + LNode
* p; // 1.初始化从首元开始查找 + p = L->next; // 1.1从首元开始查找 + int j = 1; // 1.2 计数器初值 + while (p && p->data != e) // 2.顺序查找 + { + p = p->next; // 2.1未找到指针后移 + j++; // 2.2 计数器增1 + } + if (p == NULL) // 3. 判断是否找到 + return 0; // 3.1末找到,返回0 + else + return j; // 3.2 找到,返回位序 +} + +//【算法2.20】 插入第i个元素 +template +bool InsertElem_i(LNode
*& L, int i, DT e) +{ + + int j = 0; + LNode
* p; // 1.初始化 + p = L; // 工作指针初始化 + while (p && j < i - 1) // 2. 定位到插入点前驱 + { + p = p->next; + j++; + } + if (!p || j > i - 1) // 3.判断定位是否成功: + return false; // 3.1 定位失败,不能插入 + else // 3.2 定位成功 + { + LNode
* s; + s = new LNode
; // 3.2.1建立新结点 + s->data = e; // 3.2.2新结点赋值 + s->next = p->next; // 3.2.3结点S链接到p结点之后 + p->next = s; + return true; // 3.2.4 插入成功,返回true + } + +} + +//【算法2.21】 删除第i个元素 +template +bool DeleElem_i(LNode
* (&L), int i) +{ + + LNode
* p, * q; //1.初始化:设置工作指针 + p = L; //查找从头结点开始 + int j = 0; //计数器初始化 + while (p->next && j < i - 1) //2.p定位到删除点的前驱 + { + p = p->next; + j++; + } + if (!p->next || j > i - 1) //3.删除位置不合理,不能删除 + return false; //返回false + else //4.删除操作 + { + q = p->next; //4.1暂存删除结点位置 + p->next = q->next; //4.2从链表中摘除删除结点 + delete q; + return true; //4.3删除成功,返回true + } +} + + +//【算法2.22】 修改第i个元素值 +template +bool PutElem_i(LNode
* (&L), int i, DT e) +{ + LNode
* p; // 1.初始化:设置工作指针 + p = L->next; // 从首结点开始,数结点 + int j = 1; // 计数器初始化 + while (p && j < i) // 2.查找第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3.元素不存在,返回false + return false; + else // 4.定位成功 + { + p->data = e; // 修改元素值 + return true; // 返回true + } +} + +// 释放链表所占空间 +template +void ClearList(LNode
* (&L)) +{ + + LNode
* p; + while (L->next) // 从首元结点开始,依次释放结点 + { + p = L->next; + L->next = p->next; + delete p; + } + cout << endl << "表已清空!" << endl; +} + + +//【算法2.23】 测表长 +template +int ListLength(LNode
* L) +{ // 1.初始化 + int len = 0; // 1.1 结点计数器赋初值0 + LNode
* p; // 1.2设置工作指针 + p = L; // 指向头结点 + while (p->next) // 2.数结点个数。有后继结点, + { + len++; p = p->next; // 结点数增1,指针后移 + } + return len; // 3.返回表长 +} + +// +template +bool ListEmpty(LNode
* L) //测表空 +{ + if (L->next == NULL) + return true; //空表,返回1 + else + return false; //不空,返回0 +} + + +//【算法2.24】 遍历表 +template +void DispList(LNode
* L) // 显示表内容 +{ + LNode
* p; // 1. 设置工作指针 + p = L; // 从首元结点开始遍历 + while (p->next) // 2.依次输出各结点值 + { + p = p->next; cout << p->data << "\t"; + + + } + cout << endl; +} diff --git a/Experiment/Experiment1/Task2/LinkListOperation.sln b/Experiment/Experiment1/Task2/LinkListOperation.sln new file mode 100644 index 0000000..33b9616 --- /dev/null +++ b/Experiment/Experiment1/Task2/LinkListOperation.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34701.34 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LinkListOperation", "LinkListOperation.vcxproj", "{BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Debug|x64.ActiveCfg = Debug|x64 + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Debug|x64.Build.0 = Debug|x64 + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Debug|x86.ActiveCfg = Debug|Win32 + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Debug|x86.Build.0 = Debug|Win32 + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Release|x64.ActiveCfg = Release|x64 + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Release|x64.Build.0 = Release|x64 + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Release|x86.ActiveCfg = Release|Win32 + {BAA96EFE-86CD-47EA-8D5B-CAF1CC77BDC6}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E04AA2D6-0453-4D15-9DFB-2771EC700397} + EndGlobalSection +EndGlobal diff --git a/Experiment/Experiment1/Task2/LinkListOperation.vcxproj b/Experiment/Experiment1/Task2/LinkListOperation.vcxproj new file mode 100644 index 0000000..b2749c2 --- /dev/null +++ b/Experiment/Experiment1/Task2/LinkListOperation.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {baa96efe-86cd-47ea-8d5b-caf1cc77bdc6} + LinkListOperation + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Experiment/Experiment1/Task2/LinkListOperation.vcxproj.filters b/Experiment/Experiment1/Task2/LinkListOperation.vcxproj.filters new file mode 100644 index 0000000..08fad02 --- /dev/null +++ b/Experiment/Experiment1/Task2/LinkListOperation.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + + + 源文件 + + + \ No newline at end of file diff --git a/Experiment/Experiment1/Task2/main.cpp b/Experiment/Experiment1/Task2/main.cpp new file mode 100644 index 0000000..c5f0249 --- /dev/null +++ b/Experiment/Experiment1/Task2/main.cpp @@ -0,0 +1,76 @@ +#include +using namespace std; +#include "LinkList.h" +template +bool CreateOrderedList(LNode
*& L, int n) +{ + int i; + LNode
* p, * s; + p = L; + cout << "依次输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) + { + s = new LNode
; + if (!s) return false; + cin >> s->data; + if (s->data >= p->data || p == NULL) + { + s->next = p->next; + p->next = s; + p = s; + } + else i--; + } + return true; +} +template +void MergeTwoOrderedLists(LNode
*& L1, LNode
*& L2) +{ + LNode
* p, * q, * s; + p = L1->next; + q = L1->next->next; + s = L2->next; + while (!ListEmpty(L2)) + { + if (q == NULL) + { + p->next = s; + return; + } + else if ((q->data) >= (s->data) && (p->data) <= (s->data)) + { + LNode
* t; + t = s->next; + s->next = q; + p->next = s; + s = t; + if (s == NULL) return; + p = p->next; + } + else + { + p = p->next; + q = q->next; + } + } +} +int main() +{ + LNode* L; + InitList(L); + int length; + cout << "请输入有序表的长度: "; + cin >> length; + CreateOrderedList(L, length); + DispList(L); + LNode* L2; + InitList(L2); + int length2; + cout << "请输入另一个有序表的长度: "; + cin >> length2; + CreateOrderedList(L2, length2); + DispList(L2); + MergeTwoOrderedLists(L, L2); + DispList(L); + return 0; +} \ No newline at end of file diff --git a/Experiment/Experiment2/Report.docx b/Experiment/Experiment2/Report.docx new file mode 100644 index 0000000000000000000000000000000000000000..1d624396788d02dd728dc33090797aceaf3984bc GIT binary patch literal 26010 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 literal 0 HcmV?d00001 diff --git a/Experiment/Experiment2/Task1/BracketsMatch.cpp b/Experiment/Experiment2/Task1/BracketsMatch.cpp new file mode 100644 index 0000000..e9e7f3f --- /dev/null +++ b/Experiment/Experiment2/Task1/BracketsMatch.cpp @@ -0,0 +1,54 @@ +#include +#include +using namespace std; +#include "LinkStack.h" + +bool match(string exp) +{ + SNode* S; + InitStack(S); + int flag = 1, i = 0; + char ch, e, x; + ch = exp[i++]; + while (ch != '#' && flag) + { + switch (ch) + { + case '[': + case '(': + cout << "左括号进栈!" << endl; + Push(S, ch); + break; + case ')': + GetTop(S, e); + if (!StackEmpty(S) && e == '(') + { + Pop(S, x); + cout << "右括号出栈!" << endl; + } + else flag = 0; + break; + case ']': + GetTop(S, e); + if (!StackEmpty(S) && e == '[') Pop(S, x); + else flag = 0; + break; + } + ch = exp[i++]; + } + if (StackEmpty(S) && flag) return true; + else return false; +} + +int main() +{ + int flag; + string exp; + cout << "请输入待匹配的表达式,以“#”结束:" << endl; + cin >> exp; + flag = match(exp); + if (flag) cout << "括号匹配成功!" << endl; + else cout << "括号匹配失败!" << endl; + return 0; +} + diff --git a/Experiment/Experiment2/Task1/BracketsMatch.sln b/Experiment/Experiment2/Task1/BracketsMatch.sln new file mode 100644 index 0000000..ba87d87 --- /dev/null +++ b/Experiment/Experiment2/Task1/BracketsMatch.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BracketsMatch", "BracketsMatch.vcxproj", "{BC507152-80AB-4A4F-9006-339728D357CA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BC507152-80AB-4A4F-9006-339728D357CA}.Debug|x64.ActiveCfg = Debug|x64 + {BC507152-80AB-4A4F-9006-339728D357CA}.Debug|x64.Build.0 = Debug|x64 + {BC507152-80AB-4A4F-9006-339728D357CA}.Debug|x86.ActiveCfg = Debug|Win32 + {BC507152-80AB-4A4F-9006-339728D357CA}.Debug|x86.Build.0 = Debug|Win32 + {BC507152-80AB-4A4F-9006-339728D357CA}.Release|x64.ActiveCfg = Release|x64 + {BC507152-80AB-4A4F-9006-339728D357CA}.Release|x64.Build.0 = Release|x64 + {BC507152-80AB-4A4F-9006-339728D357CA}.Release|x86.ActiveCfg = Release|Win32 + {BC507152-80AB-4A4F-9006-339728D357CA}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {12C9DCB1-398A-4F5B-9896-2020AF51DA75} + EndGlobalSection +EndGlobal diff --git a/Experiment/Experiment2/Task1/BracketsMatch.vcxproj b/Experiment/Experiment2/Task1/BracketsMatch.vcxproj new file mode 100644 index 0000000..eac0c8a --- /dev/null +++ b/Experiment/Experiment2/Task1/BracketsMatch.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {bc507152-80ab-4a4f-9006-339728d357ca} + BracketsMatch + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Experiment/Experiment2/Task1/BracketsMatch.vcxproj.filters b/Experiment/Experiment2/Task1/BracketsMatch.vcxproj.filters new file mode 100644 index 0000000..0bab683 --- /dev/null +++ b/Experiment/Experiment2/Task1/BracketsMatch.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + + + 源文件 + + + \ No newline at end of file diff --git a/Experiment/Experiment2/Task1/LinkStack.h b/Experiment/Experiment2/Task1/LinkStack.h new file mode 100644 index 0000000..08cf5af --- /dev/null +++ b/Experiment/Experiment2/Task1/LinkStack.h @@ -0,0 +1,92 @@ + +template +struct SNode //结点 +{ + DT data; //数据域,存储数据元素值 + SNode* next;//指针域,指向下一个结点 +}; + + +//【算法3.6】 +template +void InitStack(SNode
*& S)//创建空链栈 +{ + S = NULL; +} + +//【算法3.7】 +template +void DestroyStack(SNode
* (&S))//释放链栈 +{ + SNode
* p; + while (S)//从头结点开始,依次释放结点 + { + p = S; + S = S->next; + delete p; + } + //L=NULL;//头结点指向空 +} + +//【算法3.8】 +template +bool Push(SNode
*& S, DT e) +{ + SNode
* p; + p = new SNode
; + if (!p) return false; //创建失败,结束运行 + p->data = e; // 新结点赋值 + p->next = S; //结点S链接到p结点之后 + S = p; + return true; // 插入成功,返回true +} + +//【算法3.9】 +template +bool Pop(SNode
*& S, DT& e) +{ + SNode
* p; + if (S == NULL) return false; + p = S; + e = p->data; + S = S->next; + delete p; + return true; // 删除成功,返回true +} + + +//【算法3.10】 +template +bool GetTop(SNode
* S, DT& e) +{ + SNode
* p; + if (S == NULL) return false; + p = S; + e = p->data; + return true; // 删除成功,返回true +} + +//测栈空 +template +bool StackEmpty(SNode
* S) +{ + if (S == NULL) + return true; + else + return false; +} + +//显示栈内容 +template +void DispStack(SNode
* S) +{ + SNode
* p; + p = S; + while (p) + { + cout << p->data << "\t"; + p = p->next; + } + cout << endl; +} + diff --git a/Experiment/Experiment2/Task2/Ferry.cpp b/Experiment/Experiment2/Task2/Ferry.cpp new file mode 100644 index 0000000..e22fc4d --- /dev/null +++ b/Experiment/Experiment2/Task2/Ferry.cpp @@ -0,0 +1,77 @@ +#include +#include "LinkQueue.h" +using namespace std; + +struct Car +{ + int no; //车号 + char type; //c:客车,t:货车 +}; + +//求队列长度 +template +int QueueLength(LinkQueue
Q) +{ + int n = 0; + QNode
* p = Q.front->next; + while (p) + { + p = p->next; + n++; + } + return n; +} + +//车辆入队 +void Ferry(LinkQueue& Qc, LinkQueue& Qt) +{ + int i = 0; + Car e; + while (QueueLength(Qc) + QueueLength(Qt) > 0) //队列非空 + { + if (QueueLength(Qc) > 0) //客车队列非空 + { + while ((i < 4) && (QueueLength(Qc) > 0)) //客车数小于4且客车队列非空 + { + DeQueue(Qc, e); //客车出队 + cout << "车号:" << e.no << "\t类型:" << e.type << endl; + i++; + } + i = 0; + } + if (QueueLength(Qt) > 0) //货车队列非空 + { + DeQueue(Qt, e); //货车出队 + cout << "车号:" << e.no << "\t类型:" << e.type << endl; + } + } + cout << "所有车辆已过江!" << endl; +} +int main() +{ + LinkQueue Qc, Qt; + Car e; + int i, n; + InitQueue(Qc); + InitQueue(Qt); + cout << "客车数:"; + cin >> n; + for (i = 1; i <= n; i++) //客车入队 + { + e.no = i; + e.type = 'c'; + EnQueue(Qc, e); + } + cout << "货车数:"; + cin >> n; + for (i = 1; i <= n; i++) //货车入队 + { + e.no = i; + e.type = 't'; + EnQueue(Qt, e); + } + Ferry(Qc, Qt); //车辆过江 + DestroyQueue(Qc); + DestroyQueue(Qt); + return 0; +} \ No newline at end of file diff --git a/Experiment/Experiment2/Task2/Ferry.sln b/Experiment/Experiment2/Task2/Ferry.sln new file mode 100644 index 0000000..34aeaac --- /dev/null +++ b/Experiment/Experiment2/Task2/Ferry.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ferry", "Ferry.vcxproj", "{DFE075CA-094D-4856-92A8-0461FC180B13}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DFE075CA-094D-4856-92A8-0461FC180B13}.Debug|x64.ActiveCfg = Debug|x64 + {DFE075CA-094D-4856-92A8-0461FC180B13}.Debug|x64.Build.0 = Debug|x64 + {DFE075CA-094D-4856-92A8-0461FC180B13}.Debug|x86.ActiveCfg = Debug|Win32 + {DFE075CA-094D-4856-92A8-0461FC180B13}.Debug|x86.Build.0 = Debug|Win32 + {DFE075CA-094D-4856-92A8-0461FC180B13}.Release|x64.ActiveCfg = Release|x64 + {DFE075CA-094D-4856-92A8-0461FC180B13}.Release|x64.Build.0 = Release|x64 + {DFE075CA-094D-4856-92A8-0461FC180B13}.Release|x86.ActiveCfg = Release|Win32 + {DFE075CA-094D-4856-92A8-0461FC180B13}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B24F9342-2DAA-4663-8993-00F01D577229} + EndGlobalSection +EndGlobal diff --git a/Experiment/Experiment2/Task2/Ferry.vcxproj b/Experiment/Experiment2/Task2/Ferry.vcxproj new file mode 100644 index 0000000..7c6c8b2 --- /dev/null +++ b/Experiment/Experiment2/Task2/Ferry.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {dfe075ca-094d-4856-92a8-0461fc180b13} + Ferry + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Experiment/Experiment2/Task2/Ferry.vcxproj.filters b/Experiment/Experiment2/Task2/Ferry.vcxproj.filters new file mode 100644 index 0000000..d68c47c --- /dev/null +++ b/Experiment/Experiment2/Task2/Ferry.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + + + 源文件 + + + \ No newline at end of file diff --git a/Experiment/Experiment2/Task2/LinkQueue.h b/Experiment/Experiment2/Task2/LinkQueue.h new file mode 100644 index 0000000..f3d7a1f --- /dev/null +++ b/Experiment/Experiment2/Task2/LinkQueue.h @@ -0,0 +1,129 @@ +#include +using namespace std; + +template +struct QNode //结点 +{ + DT data; //数据域,存储数据元素值 + QNode* next;//指针域,指向下一个结点 +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//【算法3.19】 +template +void InitQueue(LinkQueue
& Q)//创建空队列 +{ + Q.front = new QNode
; //创建头结点 + if (!Q.front) exit(1); //创建失败,结束运行 + Q.front->next = NULL; + Q.rear = Q.front; +} + +//【算法3.20】 +template +void DestroyQueue(LinkQueue
& Q)//释放链队 +{ + QNode
* p; + while (Q.front)//从头结点开始,依次释放结点 + { + p = Q.front; + Q.front = Q.front->next; + delete p; + } + Q.rear = Q.front = NULL; +} + +template +void ClearQueue(LinkQueue
& Q) // 清空链队 +{ + QNode
* p; + while (Q.front->next) //从队头开始,依次释放结点 + { + p = Q.front->next; + Q.front->next = p->next; + delete p; + } + Q.front->next = NULL; // 空队 + Q.rear = Q.front; +} + +//【算法3.21】 入队 +template +bool EnQueue(LinkQueue
& Q, DT e) +{ + QNode
* p; + p = new QNode
; // 创建新结点 + if (!p) return false; // 创建失败,结束运行 + p->data = e; // 新结点赋值 + p->next = NULL; // 链在队尾 + Q.rear->next = p; + Q.rear = p; + return true; // 入队成功,返回true +} + +//【算法3.22】 出队 +template +bool DeQueue(LinkQueue
& Q, DT& e) +{ + QNode
* p; + if (Q.front == Q.rear) return false; //队空,返回false + p = Q.front->next; // 取出队元素 + e = p->data; + Q.front->next = p->next; //队首元素出队 + if (Q.rear == p) //只有一个元素时出队, + Q.rear = Q.front; // 修改队尾 + delete p; + return true; // 出队成功,返回true +} + + +//【算法3.23】 取队头元素 +template +bool GetHead(LinkQueue
Q, DT& e) +{ + if (Q.front == Q.rear) return false; // 队空,返回false + e = Q.front->next->data; + return true; // 删除成功,返回true +} + +//取队尾元素 +template +bool GetTail(LinkQueue
Q, DT& e) +{ + if (Q.front == Q.rear) // 队空 + return false; // 返回false + e = Q.rear->data; // 获取队尾元素 + return true; // 返回true +} + +//测队空 +template +bool QueueEmpty(LinkQueue
Q) +{ + if (Q.front == Q.rear) // 队空 + return true; //返回true + else //非空 + return false; //返回false +} + +//显示队列内容 +template +void DispQueue(LinkQueue
Q) +{ + QNode
* p; + p = Q.front->next; + while (p) + { + cout << p->data << "\t"; + p = p->next; + } + cout << endl; +} + diff --git a/Experiment/Experiment3/LeafNum.cpp b/Experiment/Experiment3/LeafNum.cpp new file mode 100644 index 0000000..005270b --- /dev/null +++ b/Experiment/Experiment3/LeafNum.cpp @@ -0,0 +1,53 @@ +#include +#include "BiTree.h" +using namespace std; + +//递归方法求解二叉树叶节点个数 +template +int LeafNum_1(BTNode
* bt) { + if (!bt) { + return 0; + } + else if (bt->lchild == NULL && bt->rchild == NULL) { + return 1; + } + else { + return LeafNum_1(bt->lchild) + LeafNum_1(bt->rchild); + } +} + +//非递归方法求解二叉树叶节点个数 +template +int LeafNum_2(BTNode
* bt) { + if (!bt) + return 0; + SqStack
S; + InitStack(S, 20); + BTNode
* p = bt; + int count = 0; + while (p != NULL || !StackEmpty(S)) + { + while (p != NULL) + { + if (p->lchild == NULL && p->rchild == NULL) + count++; + Push(S, p); + p = p->lchild; + } + if (!StackEmpty(S)) + { + Pop(S, p); + p = p->rchild; + } + } + return count; +} + +int main() { + BTNode* bt; + CreateBiTree(bt); + cout << "递归方法求得二叉树叶节点个数为:" << LeafNum_1(bt) << endl; + cout << "非递归方法求得二叉树叶节点个数为:" << LeafNum_2(bt) << endl; + DestroyBiTree(bt); + return 0; +} \ No newline at end of file diff --git a/Experiment/Experiment3/LeafNum.sln b/Experiment/Experiment3/LeafNum.sln new file mode 100644 index 0000000..5c5a71a --- /dev/null +++ b/Experiment/Experiment3/LeafNum.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.34928.147 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LeafNum", "LeafNum.vcxproj", "{A1435839-D838-4C8A-8F43-03AE8436D845}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A1435839-D838-4C8A-8F43-03AE8436D845}.Debug|x64.ActiveCfg = Debug|x64 + {A1435839-D838-4C8A-8F43-03AE8436D845}.Debug|x64.Build.0 = Debug|x64 + {A1435839-D838-4C8A-8F43-03AE8436D845}.Debug|x86.ActiveCfg = Debug|Win32 + {A1435839-D838-4C8A-8F43-03AE8436D845}.Debug|x86.Build.0 = Debug|Win32 + {A1435839-D838-4C8A-8F43-03AE8436D845}.Release|x64.ActiveCfg = Release|x64 + {A1435839-D838-4C8A-8F43-03AE8436D845}.Release|x64.Build.0 = Release|x64 + {A1435839-D838-4C8A-8F43-03AE8436D845}.Release|x86.ActiveCfg = Release|Win32 + {A1435839-D838-4C8A-8F43-03AE8436D845}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C6AC6B0D-CC6B-4023-9F49-D0756F2B0732} + EndGlobalSection +EndGlobal diff --git a/Experiment/Experiment3/LeafNum.vcxproj b/Experiment/Experiment3/LeafNum.vcxproj new file mode 100644 index 0000000..6aeed9a --- /dev/null +++ b/Experiment/Experiment3/LeafNum.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {a1435839-d838-4c8a-8f43-03ae8436d845} + LeafNum + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Experiment/Experiment3/LeafNum.vcxproj.filters b/Experiment/Experiment3/LeafNum.vcxproj.filters new file mode 100644 index 0000000..0eb6c88 --- /dev/null +++ b/Experiment/Experiment3/LeafNum.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 头文件 + + + + + 源文件 + + + \ No newline at end of file diff --git a/Experiment/Experiment3/Report.docx b/Experiment/Experiment3/Report.docx new file mode 100644 index 0000000000000000000000000000000000000000..727e2b8bab9aab7121787f7c6ef41d2e32ebb0c4 GIT binary patch literal 21085 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 ah^>MP@MZ-rxdScV6lM?y?iw)g1@QpyM-A5i literal 0 HcmV?d00001 diff --git a/Experiment/Experiment3/bitree.h b/Experiment/Experiment3/bitree.h new file mode 100644 index 0000000..733bb01 --- /dev/null +++ b/Experiment/Experiment3/bitree.h @@ -0,0 +1,424 @@ +#include +using namespace std; + +template +struct BTNode +{ + DT data; //数据域 + BTNode* lchild; //指向左子树的指针 + BTNode* rchild; //指向右子树的指针 +}; + +//队列工具 +template +struct SqQueue // 顺序队类 +{ + BTNode
** base; // 队列首址 + int front; // 队头指针 + int rear; // 队尾指针 + int queuesize; // 队容量 +}; + +//栈 +template +struct SqStack // 顺序栈 +{ + BTNode
** base; // 栈首址 + int top; // 栈顶指针 + int stacksize; // 栈容量 +}; + +//算法5.1 先序遍历递归算法 +template +void PreOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + cout << bt->data << ' '; //输出结点上的数据 + PreOrDerBiTree(bt->lchild); //递归的调用前序遍历左子树 + PreOrDerBiTree(bt->rchild); //递归的调用前序遍历右子树 + } + return; +} + +//算法5.2 中序遍历递归算法 +template +void InOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + InOrDerBiTree(bt->lchild); //递归的调用中序遍历左子树 + cout << bt->data << ' '; //输出结点上的数据 + InOrDerBiTree(bt->rchild); //递归的调用中序遍历右子树 + } + return; +} + +//算法5.3 后序遍历递归算法 +template +void PostOrDerBiTree(BTNode
* bt) +{ + if (bt != NULL) + { + PostOrDerBiTree(bt->lchild); //递归的调用后序遍历左子树 + PostOrDerBiTree(bt->rchild); //递归的调用后序遍历右子树 + cout << bt->data << ' '; //输出结点上的数据 + } + return; +} + + +//算法5.4 层序遍历算法 +template +void LevelBiTree(BTNode
* bt) +{ + SqQueue
Q; // 创建一个队 + int m = 20; + InitQueue(Q, m); + BTNode
* p; + p = bt; + if (p) EnQueue(Q, p); // 树非空,入队 + while (!QueueEmpty(Q)) // 队非空 + { + DeQueue(Q, p); // 出队 + cout << p->data; // 访问 + if (p->lchild != NULL) // 有左孩子 + EnQueue(Q, p->lchild); // 左孩子入队 + if (p->rchild != NULL) // 有右孩子 + EnQueue(Q, p->rchild); // 右孩子入队 + } + DestroyQueue(Q); // 销毁队列 +} + + +//算法5.5 先序非遍历递归算法 +template +void PreOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + p = bt; + while (p != NULL || !StackEmpty(S)) // 树非空或栈非空 + { + while (p != NULL) // 结点非空 + { + cout << p->data << ' '; // 访问结点 + Push(S, p); // 入栈 + p = p->lchild; // 转左子树 + } + if (!StackEmpty(S)) // 栈非空 + { + Pop(S, p); // 出栈 + p = p->rchild; // 转出栈结点的右子树 + } + } + DestroyStack(S); //销毁栈 +} + + +//算法5.6 中序非遍历递归算法 +template +void InOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建一个栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + p = bt; + while (p != NULL || !StackEmpty(S)) // 结点非空或栈非空 + { + while (p != NULL) // 结点非空 + { + Push(S, p); // 入栈 + p = p->lchild; // 转出栈结点右子树 + } + if (!StackEmpty(S)) // 栈非空 + { + Pop(S, p); // 出栈 + cout << p->data << ' '; // 访问出栈结点 + p = p->rchild; // 转出栈结点的右子树 + } + } + DestroyStack(S); // 销毁栈 +} + + + +//算法5.7 后序非遍历递归算法 +template +void PostOrderBiTree_N(BTNode
* bt) +{ + SqStack
S; // 创建一个栈 + int m = 20; + InitStack(S, m); + BTNode
* p; + BTNode
* r; + p = bt; + bool flag; + do + { + while (p) // 结点非空 + { + Push(S, p); // 结点入栈 + p = p->lchild; // 转左子树 + } + r = NULL; // 指向刚被访问点,初值为空 + flag = true; // true表示处理栈顶结点 + while (!StackEmpty(S) && flag) // 栈非空且当前处理的是栈顶结点 + { + GetTop(S, p); // 获取栈顶元素 + if (p->rchild == r) // 如果 当前结点是栈元素的右孩子 + { + cout << p->data << ' '; // 访问栈顶元素 + Pop(S, p); // 出栈 + r = p; // r指向被访问结点 + } + else // 否则 + { + p = p->rchild; // 转栈顶元素右孩子 + flag = false; // 处理非栈顶结点 + } + } + } while (!StackEmpty(S)); // 栈非空,循环 + cout << endl; + DestroyStack(S); // 销毁栈 +} + + +//算法5.8 创建二叉树 +template +void CreateBiTree(BTNode
*& bt) +{ + char ch; + cin >> ch; // 输入根结点的数据 + if (ch == '#') // # 表示指针为空,说明树为空 + bt = NULL; + else + { + bt = new BTNode
; // 申请内存 + if (!bt) + { + cout << "申请内存失败!" << endl; + exit(-1); // 申请内存失败退出 + } + bt->data = ch; + CreateBiTree(bt->lchild); // 创建根结点左子树 + CreateBiTree(bt->rchild); // 创建根结点右子树 + } + return; +} + + +//算法5.9 销毁二叉树 +template +void DestroyBiTree(BTNode
*& bt) +{ + if (bt) // 树非空 + { + DestroyBiTree(bt->lchild); // 销毁左子树 + DestroyBiTree(bt->rchild); // 销毁右子树 + delete bt; + } +} + + +//算法5.10 结点查找 + +template +BTNode
* Search(BTNode
* bt, DT e) // 查找值为e的元素 +{ + BTNode
* p; + if (bt == NULL) // 结点为空,返回 + return NULL; + else if (bt->data == e) // 找到,返回结点指针 + return bt; + else // 结点值不为e + { + p = Search(bt->lchild, e); // 在左子树上查找 + if (p != NULL) // 找到 + return p; // 返回结点指针 + else // 未找到 + return Search(bt->rchild, e); // 转右子树上查找 + } +} + +//算法5.11 求树深 +template +int Depth(BTNode
* bt) +{ + int hl, hr; + if (bt == NULL) // 树空 + return 0; // 深度为0 + else // 树非空 + { + + hl = Depth(bt->lchild); // 求左子树深度 + hr = Depth(bt->lchild); // 求右子树深度 + if (hl > hr) // 左子树高 + return hl + 1; // 树高为左子树高加1 + else return hr + 1; // 左子树高,树高为左子树高加1 + } +} + + +//算法5.12 结点计数 +template +int NodeCount(BTNode
* bt) +{ + if (bt == NULL) // 空树,结点数为0 + return 0; + else // 非空树,结点数为左、右子树结点数的和加1 + return NodeCount(bt->lchild) + NodeCount(bt->rchild) + 1; +} + +template +void DispBiTree(BTNode
* bt, int level) // 显示树 +{ + if (bt) //空二叉树不显示 + { + DispBiTree(bt->rchild, level + 1); //显示右子树 + cout << endl; //显示新行 + for (int i = 0; i < level - 1; i++) + cout << " "; //确保在第level列显示节点 + cout << bt->data; //显示节点 + DispBiTree(bt->lchild, level + 1); //显示左子树 + cout << endl; + }//if +} + + +template +int leftCount(BTNode
* bt) +{ + if (bt->lchild == NULL && bt->rchild == NULL) // 空树,结点数为0 + return 0; + else // 非空树,结点数为左、右子树结点数的和加1 + return NodeCount(bt->lchild) + NodeCount(bt->rchild) + 1; +} + + +//【算法3.14】 初始化队列 +template +void InitQueue(SqQueue
& Q, int m) +{ + Q.base = new BTNode
*[m]; // 申请队列空间 + if (Q.base == NULL) // 申请空间失败 + { + cout << "未创建成功!"; + exit(1); // 退出 + } + Q.front = Q.rear = 0; // 设置队列属性 + Q.queuesize = m; +} + + +//算法3.15】 销毁列列 +template +void DestroyQueue(SqQueue
& Q) +{ + delete[] Q.base; // 释放队列空间 + Q.front = Q.rear = 0; // 设置队列属性 + Q.queuesize = 0; +} + + +//【算法3.16】 入队 +template +bool EnQueue(SqQueue
& Q, BTNode
* e) +{ + if ((Q.rear + 1) % Q.queuesize == Q.front) // 队满 + return false; // 返回false + Q.base[Q.rear] = e; // 出队 + Q.rear = (Q.rear + 1) % Q.queuesize; // 修改队列属性 + return true; // 返回true +} + +//【算法3.17】 出队 +template +bool DeQueue(SqQueue
& Q, BTNode
*& e) +{ + if (Q.front == Q.rear) // 队空 + return false; + e = Q.base[Q.front]; + Q.front = (Q.front + 1) % Q.queuesize; + return true; // 删除成功,返回true +} + +// 测队空 +template +bool QueueEmpty(SqQueue
Q) +{ + if (Q.front == Q.rear) // 队空 + return true; // 返回true + else // 队不空 + return false; // 返回false +} + +//【算法3.1】 初始化栈 +template +void InitStack(SqStack
& S, int m) +{ + S.base = new BTNode
*[m]; // 申请栈空间 + if (S.base == NULL) + { + cout << "未创建成功!"; + exit(1); + } + S.top = -1; // 空栈 + S.stacksize = m; // 栈容量为m +} + + +//算法3.2】 销毁栈 +template +void DestroyStack(SqStack
& S)//析构函数 +{ + delete[] S.base; //释放栈空间 + S.top = -1; + S.stacksize = 0; +} + + +//【算法3.3】 +template +bool Push(SqStack
& S, BTNode
* e) +{ + if (S.top == S.stacksize - 1) // 栈满,不能插入 + return false; + S.top++; + S.base[S.top] = e; + return true; // 插入成功,返回true +} + +//【算法3.4】 出栈 +template +bool Pop(SqStack
& S, BTNode
*& e) +{ + if (S.top == -1) //栈空 + return false; + e = S.base[S.top]; + S.top--; + return true; // 出栈成功,返回true +} + +template // 获取栈元素 +bool GetTop(SqStack
& S, BTNode
*& e) +{ + if (S.top == -1) // 栈空,返回false + return false; + e = S.base[S.top]; // 取栈元素 + return true; // 返回true +} + + +// 测栈空 +template +bool StackEmpty(SqStack
S) +{ + if (S.top == -1) // 栈空,返回true + return true; + else // 栈非空,返回false + return false; +} \ No newline at end of file diff --git a/Experiment/Experiment6/InsertSort.cpp b/Experiment/Experiment6/InsertSort.cpp new file mode 100644 index 0000000..ad104c8 --- /dev/null +++ b/Experiment/Experiment6/InsertSort.cpp @@ -0,0 +1,62 @@ +#include +#include "LinkList.h" +using namespace std; + +template +void InsertSort_LL(LNode
* L) { + if (L == NULL || L->next == NULL) { + return; // 空表或只有一个结点,不需要排序 + } + + LNode
* r = L->next; // 已排序表表尾 + LNode
* q = r->next; // q为当前处理项,r的后继 + + while (q) { + LNode
* p1 = L; + LNode
* p2 = p1->next; + + while (q->data >= p2->data && p2 != q) { // 当前结点数据大于等于p2,插入点后移 + p1 = p2; + p2 = p2->next; + } + + if (p2 == q) { // 当前项无须移动 + r = q; // 有序表表尾顺移 + } + else { // 插入p2前面 + r->next = q->next; // 摘除q结点 + q->next = p1->next; // 在p1后插入结点q + p1->next = q; + } + + q = r->next; // 下一个需处理的项 + } +} + + +int main() { + LNode* L; + int n; + + // 创建单链表 + cout << "请输入单链表的长度:"; + cin >> n; + InitList(L); + CreateList_1(L, n); + + // 显示初始单链表 + cout << "初始单链表:"; + DispList(L); + + // 插入排序 + InsertSort_LL(L); + + // 显示排序后的单链表 + cout << "排序后的单链表:"; + DispList(L); + + // 销毁单链表 + DestroyList(L); + + return 0; +} \ No newline at end of file diff --git a/Experiment/Experiment6/InsertSort.sln b/Experiment/Experiment6/InsertSort.sln new file mode 100644 index 0000000..4e96098 --- /dev/null +++ b/Experiment/Experiment6/InsertSort.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.34916.146 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InsertSort", "InsertSort.vcxproj", "{3CA81F66-07E1-40A0-9984-17556857602C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3CA81F66-07E1-40A0-9984-17556857602C}.Debug|x64.ActiveCfg = Debug|x64 + {3CA81F66-07E1-40A0-9984-17556857602C}.Debug|x64.Build.0 = Debug|x64 + {3CA81F66-07E1-40A0-9984-17556857602C}.Debug|x86.ActiveCfg = Debug|Win32 + {3CA81F66-07E1-40A0-9984-17556857602C}.Debug|x86.Build.0 = Debug|Win32 + {3CA81F66-07E1-40A0-9984-17556857602C}.Release|x64.ActiveCfg = Release|x64 + {3CA81F66-07E1-40A0-9984-17556857602C}.Release|x64.Build.0 = Release|x64 + {3CA81F66-07E1-40A0-9984-17556857602C}.Release|x86.ActiveCfg = Release|Win32 + {3CA81F66-07E1-40A0-9984-17556857602C}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {638C3207-9916-43D8-88EC-BC64BB58E25C} + EndGlobalSection +EndGlobal diff --git a/Experiment/Experiment6/InsertSort.vcxproj b/Experiment/Experiment6/InsertSort.vcxproj new file mode 100644 index 0000000..cdc7b4b --- /dev/null +++ b/Experiment/Experiment6/InsertSort.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {3ca81f66-07e1-40a0-9984-17556857602c} + InsertSort + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + \ No newline at end of file diff --git a/Experiment/Experiment6/InsertSort.vcxproj.filters b/Experiment/Experiment6/InsertSort.vcxproj.filters new file mode 100644 index 0000000..a4ce222 --- /dev/null +++ b/Experiment/Experiment6/InsertSort.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + + + 头文件 + + + \ No newline at end of file diff --git a/Experiment/Experiment6/LinkList.h b/Experiment/Experiment6/LinkList.h new file mode 100644 index 0000000..ef08ad5 --- /dev/null +++ b/Experiment/Experiment6/LinkList.h @@ -0,0 +1,256 @@ +#include +using namespace std; + +template +struct LNode //链表结点 +{ + DT data; //数据域,存储数据元素值 + LNode* next; //指针域,指向下一个结点 +}; + +//算法2.1 +template +bool PriorElem_e(LNode
* L, DT e, DT& pre_e) // 求值为e的元素前驱 +{ + int k; + k = LocateElem_e(L, e); // 1.获取e的位序k + if (k > 1) // 2.位序k大于1 + { + GetElem_i(L, k - 1, pre_e); // 第k-1个元素为e的前驱 + return true; + } + else // 3.元素e无前驱 + return false; // 返回false +} + +//【算法2.14】 创建空单链表 +template +bool InitList(LNode
*& L) +{ + L = new LNode
; // 1.创建头结点 + if (!L) exit(1); // 2.创建失败,退出 + L->next = NULL; // 3.创建成功 + return true; // 返回true +} + +//【算法2.15】 尾插法创建n的元素 +template +bool CreateList_1(LNode
*& L, int n) +{ + int i; + LNode
* p, * s; + p = L; //1.工作指针初始化,指向尾结点 + cout << "依次输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) // 2.按元素位序正序创建各结点 + { + s = new LNode
; // 2.1 新建一个结点s + if (!s) // 2.2 创建失败,返回false + return false; + cin >> s->data; // 2.3 输入结点值 + s->next = p->next; // 2.4 s 链在表尾 + p->next = s; + p = s; // 2.5 工作指针指向 s + } + return true; // 3.创建成功,返回true +} + +//【算法2.16】 头插法创建n个元素 +template +bool CreateList_2(LNode
* (&L), int n) +{ + int i; + LNode
* s; + cout << "逆序输入" << n << "个数据元素:" << endl; + for (i = 1; i <= n; i++) // 1.按元素位序逆序创建各结点 + { + s = new LNode
; // 1.1 新建一个结点 s + if (!s) // 1.2 创建失败,返回false + return false; + cin >> s->data; // 1.3 输入结点值 + s->next = L->next; // 1.4 s 在头结点后 + L->next = s; + } + return true; // 1.创建成功,返回true +} + +//【算法2.17】 +template +void DestroyList(LNode
* (&L)) // 释放链表所占空间 +{ + LNode
* p; + while (L) // 1. 表非空,从头结点开始,依次释放结点 + { + p = L; // 1.1 处理表头结点 + L = L->next; // 1.2 头指针后移 + delete p; // 1.3 释放表头结点所占内存 + } + L = NULL; // 2.头指针指向空 +} + +//【算法2.18】 获取第i个元素 +template +bool GetElem_i(LNode
* L, int i, DT& e) +{ + LNode
* p; // 1.初始化 + p = L->next; // 1.1 设置工作指针,从首结点开始数结点 + int j = 1; // 1.2 计数器初始化 + while (p && j < i) // 2.定位到第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3 未找到,返回false + return false; + else // 4. 找到 + { + e = p->data; // 获取第i个元素值 + return true; // 返回true + } +} + +//【算法2.19】 查找值为e的元素位序 +template +int LocateElem_e(LNode
* L, DT e) +{ + + LNode
* p; // 1.初始化从首元开始查找 + p = L->next; // 1.1从首元开始查找 + int j = 1; // 1.2 计数器初值 + while (p && p->data != e) // 2.顺序查找 + { + p = p->next; // 2.1未找到指针后移 + j++; // 2.2 计数器增1 + } + if (p == NULL) // 3. 判断是否找到 + return 0; // 3.1末找到,返回0 + else + return j; // 3.2 找到,返回位序 +} + +//【算法2.20】 插入第i个元素 +template +bool InsertElem_i(LNode
*& L, int i, DT e) +{ + + int j = 0; + LNode
* p; // 1.初始化 + p = L; // 工作指针初始化 + while (p && j < i - 1) // 2. 定位到插入点前驱 + { + p = p->next; + j++; + } + if (!p || j > i - 1) // 3.判断定位是否成功: + return false; // 3.1 定位失败,不能插入 + else // 3.2 定位成功 + { + LNode
* s; + s = new LNode
; // 3.2.1建立新结点 + s->data = e; // 3.2.2新结点赋值 + s->next = p->next; // 3.2.3结点S链接到p结点之后 + p->next = s; + return true; // 3.2.4 插入成功,返回true + } + +} + +//【算法2.21】 删除第i个元素 +template +bool DeleElem_i(LNode
* (&L), int i) +{ + + LNode
* p, * q; //1.初始化:设置工作指针 + p = L; //查找从头结点开始 + int j = 0; //计数器初始化 + while (p->next && j < i - 1) //2.p定位到删除点的前驱 + { + p = p->next; + j++; + } + if (!p->next || j > i - 1) //3.删除位置不合理,不能删除 + return false; //返回false + else //4.删除操作 + { + q = p->next; //4.1暂存删除结点位置 + p->next = q->next; //4.2从链表中摘除删除结点 + delete q; + return true; //4.3删除成功,返回true + } +} + + +//【算法2.22】 修改第i个元素值 +template +bool PutElem_i(LNode
* (&L), int i, DT e) +{ + LNode
* p; // 1.初始化:设置工作指针 + p = L->next; // 从首结点开始,数结点 + int j = 1; // 计数器初始化 + while (p && j < i) // 2.查找第i个元素结点 + { + p = p->next; j++; + } + if (!p || j > i) // 3.元素不存在,返回false + return false; + else // 4.定位成功 + { + p->data = e; // 修改元素值 + return true; // 返回true + } +} + +// 释放链表所占空间 +template +void ClearList(LNode
* (&L)) +{ + + LNode
* p; + while (L->next) // 从首元结点开始,依次释放结点 + { + p = L->next; + L->next = p->next; + delete p; + } + cout << endl << "表已清空!" << endl; +} + + +//【算法2.23】 测表长 +template +int ListLength(LNode
* L) +{ // 1.初始化 + int len = 0; // 1.1 结点计数器赋初值0 + LNode
* p; // 1.2设置工作指针 + p = L; // 指向头结点 + while (p->next) // 2.数结点个数。有后继结点, + { + len++; p = p->next; // 结点数增1,指针后移 + } + return len; // 3.返回表长 +} + +// +template +bool ListEmpty(LNode
* L) //测表空 +{ + if (L->next == NULL) + return true; //空表,返回1 + else + return false; //不空,返回0 +} + + +//【算法2.24】 遍历表 +template +void DispList(LNode
* L) // 显示表内容 +{ + LNode
* p; // 1. 设置工作指针 + p = L; // 从首元结点开始遍历 + while (p->next) // 2.依次输出各结点值 + { + p = p->next; cout << p->data << "\t"; + + + } + cout << endl; +} +#pragma once diff --git a/Experiment/Experiment6/Report.docx b/Experiment/Experiment6/Report.docx new file mode 100644 index 0000000000000000000000000000000000000000..34baa089461d8f84575f09248f0740de8d8f5eee GIT binary patch literal 20405 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 Dt|si4 literal 0 HcmV?d00001 diff --git a/OrigFiles/1-绪/app1-4.cpp b/OrigFiles/1-绪/app1-4.cpp index e3fd65c..64e694a 100644 --- a/OrigFiles/1-绪/app1-4.cpp +++ b/OrigFiles/1-绪/app1-4.cpp @@ -1,19 +1,32 @@ -#include +#include//cout,cin using namespace std; -void main() +struct stu +{ int xh; // ѧ + float height; // +}; + +int MaxH; // + +//㷨1.1 +int maxHeight(stu student[], int n) { - int i=0,j=0,count=0; - for (i=2;i<=1000;i++) - { - for (j=2;j<=i-1;j++) - if(i%j==0) - break; - if(j>i-1) - { - cout<student[MaxH-1].height) // 2.1 + MaxH=i; // 2.2Ϊ + } + return student[MaxH-1].xh; // 3.ѧѧѧ +} + +int main() +{ + cout<<"ȡ"< -using namespace std; - -void main() -{ - int i=0,j=0,count=0; - for (i=2;i<=1000;i++) - { - for (j=2;j<=i-1;j++) - if(i%j==0) - break; - if(j>i-1) - { - cout< + + + + + diff --git a/OrigFiles/2-1/2-1.layout b/OrigFiles/2-1/2-1.layout new file mode 100644 index 0000000..7e6a1d0 --- /dev/null +++ b/OrigFiles/2-1/2-1.layout @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/OrigFiles/2-线性表/2-2-LinkList-单链表/LinkList.h b/OrigFiles/2-1/LinkList.h similarity index 87% rename from OrigFiles/2-线性表/2-2-LinkList-单链表/LinkList.h rename to OrigFiles/2-1/LinkList.h index d311770..9451b06 100644 --- a/OrigFiles/2-线性表/2-2-LinkList-单链表/LinkList.h +++ b/OrigFiles/2-1/LinkList.h @@ -6,20 +6,6 @@ struct LNode // LNode *next; //ָָһ }; -//㷨2.1 -template -bool PriorElem_e(LNode
*L, DT e, DT &pre_e) // ֵΪeԪǰ -{ - int k; - k=LocateElem_e(L,e); // 1.ȡeλk - if(k>1) // 2.λk1 - { - GetElem_i(L,k-1,pre_e); // k-1ԪΪeǰ - return true; - } - else // 3.Ԫeǰ - return false; // false -} //㷨2.14 յ template @@ -35,11 +21,10 @@ bool InitList(LNode
*&L) template bool CreateList_1(LNode
*&L,int n) { - int i; LNode
*p,*s; p=L; //1.ָʼָβ cout<<""<; // 2.1 ½һs if (!s) // 2.2 ʧܣfalse @@ -56,10 +41,9 @@ bool CreateList_1(LNode
*&L,int n) template bool CreateList_2(LNode
*(&L),int n) { - int i; LNode
*s; cout<<""<; // 1.1 ½һ s if (!s) // 1.2 ʧܣfalse @@ -90,7 +74,7 @@ template bool GetElem_i(LNode
*L,int i, DT &e) { LNode
*p; // 1.ʼ - p=L->next; // 1.1 ùָ룬׽㿪ʼ + p=L->next; // 1.1 ùָ룬׽㿪ʼ int j=1; // 1.2 ʼ while(p&&j *L, DT e) //㷨2.20 iԪ template -bool InsertElem_i(LNode
*&L,int i, DT e) +bool InsertElem_i(LNode
*(&L),int i, DT e) { int j=0; @@ -134,7 +118,7 @@ bool InsertElem_i(LNode
*&L,int i, DT e) p=L; // ָʼ while(p && jnext; + p=p->next;// j++; } if(!p||j>i-1) // 3.ж϶λǷɹ @@ -161,7 +145,7 @@ bool DeleElem_i(LNode
*(&L),int i) int j=0; //ʼ while(p->next && jnext; + p=p->next; // j++; } if(!p->next||j>i-1) //3.ɾλòɾ @@ -242,11 +226,11 @@ template void DispList(LNode
*L) // ʾ { LNode
*p; // 1. ùָ - p=L; // Ԫ㿪ʼ - while(p->next) // 2.ֵ + p=L->next; // Ԫ㿪ʼ + while(p) // 2.ֵ { - p=p->next;cout<data<<"\t"; - + cout<data<<"\t"; + p=p->next; } cout< //cout,cin +using namespace std; +#include "LinkList.h" + + +void dispmenu() +{ // ʾ˵ + cout< * L; + system("cls"); // + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~12):"; + cin>>choice; + switch(choice) + { + case 1: // ʼ + InitList(L); + cout<>n; + cout<>n; + cout<>i; + cout<>e; + i=LocateElem_e(L, e); + if(i) + cout<>i; + cout<<"Ԫֵ"<>e; + if(InsertElem_i(L,i,e)) + { + cout<>i; + if(DeleElem_i(L,i)) + { + cout<>i; + cout<<"Ԫֵ"<>e; + if(PutElem_i(L,i,e)) + { + cout< *&L) -{ - LNode *p,*q; // 1.ùָ - p=L->next; // ԭͷ㣬Ϊúͷ - L->next=NULL; - while(p) // 2. ժԭ㣬ͷ巨뵽 - { - q=p; // 2.1 qȡǰλ - p=p->next; // 2.2 pָһ - q->next=L->next; // 2.3 q 뵽ͷ֮ - L->next=q; - } -} void dispmenu() { // ʾ˵ cout< * L; system("cls"); // @@ -52,7 +35,7 @@ int main() do { dispmenu(); // ʾ˵ - cout<<"Enter choice(1~120 ˳):"; + cout<<"Enter choice(1~12):"; cin>>choice; switch(choice) { @@ -153,33 +136,17 @@ int main() case 12: //ʾ DispList(L); cout<>e; - if(PriorElem_e(L,e,pre_e)) - cout< +struct LNode // +{ + DT data; //򣬴洢Ԫֵ + LNode *next; //ָָһ +}; + + +//㷨2.14 յ +template +bool InitList(LNode
*&L) +{ + L=new LNode
; // 1.ͷ + if(!L) exit(1); // 2.ʧܣ˳ + L->next=NULL; // 3.ɹ + return true; // true +} + +//㷨2.15 β巨nԪ +template +bool CreateList_1(LNode
*&L,int n) +{ + LNode
*p,*s; + p=L; //1.ָʼָβ + cout<<""<; // 2.1 ½һs + if (!s) // 2.2 ʧܣfalse + return false; + cin>>s->data; // 2.3 ֵ + s->next=p->next; // 2.4 s ڱβ + p->next=s; + p=s; // 2.5 ָָ s + } + return true; // 3.ɹtrue +} + +//㷨2.16 ͷ巨nԪ +template +bool CreateList_2(LNode
*(&L),int n) +{ + LNode
*s; + cout<<""<; // 1.1 ½һ s + if (!s) // 1.2 ʧܣfalse + return false; + cin>>s->data; // 1.3 ֵ + s->next=L->next; // 1.4 s ͷ + L->next=s; + } + return true; // 1.ɹtrue +} + +//㷨2.17 +template +void DestroyList(LNode
*(&L)) // ͷռռ +{ + LNode
*p; + while(L) // 1. ǿ,ͷ㿪ʼͷŽ + { + p=L; // 1.1 ͷ + L=L->next; // 1.2 ͷָ + delete p; // 1.3 ͷűͷռڴ + } + L=NULL; // 2.ͷָָ +} + +//㷨2.18 ȡiԪ +template +bool GetElem_i(LNode
*L,int i, DT &e) +{ + LNode
*p; // 1.ʼ + p=L->next; // 1.1 ùָ룬׽㿪ʼ + int j=1; // 1.2 ʼ + while(p&&jnext;j++; + } + if(!p ||j>i ) // 3 δҵfalse + return false; + else // 4. ҵ + { + e=p->data; // ȡiԪֵ + return true; // true + } +} + +//㷨2.19 ֵΪeԪλ +template +int LocateElem_e(LNode
*L, DT e) +{ + + LNode
*p; // 1.ʼԪʼ + p=L->next; // 1.1Ԫʼ + int j=1; // 1.2 ֵ + while(p && p->data!=e) // 2.˳ + { + p=p->next; // 2.1δҵָ + j++; // 2.2 1 + } + if(p==NULL) // 3. жǷҵ + return 0; // 3.1ĩҵ0 + else + return j; // 3.2 ҵλ +} + +//㷨2.20 iԪ +template +bool InsertElem_i(LNode
*(&L),int i, DT e) +{ + + int j=0; + LNode
*p; // 1.ʼ + p=L; // ָʼ + while(p && jnext;// + j++; + } + if(!p||j>i-1) // 3.ж϶λǷɹ + return false; // 3.1 λʧܣܲ + else // 3.2 λɹ + { + LNode
*s; + s=new LNode
; // 3.2.1½ + s->data=e; // 3.2.2½㸳ֵ + s->next=p->next; // 3.2.3Sӵp֮ + p->next=s; + return true; // 3.2.4 ɹtrue + } + +} + +//㷨2.21 ɾiԪ +template +bool DeleElem_i(LNode
*(&L),int i) +{ + + LNode
*p,*q; //1.ʼùָ + p=L; //Ҵͷ㿪ʼ + int j=0; //ʼ + while(p->next && jnext; // + j++; + } + if(!p->next||j>i-1) //3.ɾλòɾ + return false; //false + else //4.ɾ + { + q=p->next; //4.1ݴɾλ + p->next=q->next; //4.2ժɾ + delete q; + return true; //4.3ɾɹtrue + } +} + + +//㷨2.22 ޸ĵiԪֵ +template +bool PutElem_i(LNode
*(&L),int i, DT e) +{ + LNode
*p; // 1.ʼ:ùָ + p=L->next; // ׽㿪ʼ + int j=1; // ʼ + while(p&&jnext;j++; + } + if(!p||j>i) // 3.Ԫز,false + return false; + else // 4.λɹ + { + p->data=e; // ޸Ԫֵ + return true; // true + } +} + + // ͷռռ +template +void ClearList(LNode
*(&L)) +{ + + LNode
*p; + while(L->next) // Ԫ㿪ʼͷŽ + { + p=L->next; + L->next=p->next; + delete p; + } + cout< +int ListLength(LNode
*L) +{ // 1.ʼ + int len=0; // 1.1 ֵ0 + LNode
*p; // 1.2ùָ + p=L; // ָͷ + while(p->next) // 2.к̽㣬 + { + len++;p=p->next; // 1ָ + } + return len; // 3.ر +} + +// +template +bool ListEmpty(LNode
*L) // +{ + if(L->next==NULL) + return true; //ձ1 + else + return false; //գ0 +} + + +//㷨2.24 +template +void DispList(LNode
*L) // ʾ +{ + LNode
*p; // 1. ùָ + p=L->next; // Ԫ㿪ʼ + while(p) // 2.ֵ + { + cout<data<<"\t"; + p=p->next; + + } + cout<//cout,cin using namespace std; +char pause; + struct PolyNode // ʽ { float coef; // ϵ @@ -17,16 +19,18 @@ void InitPoly(PolyNode *&L) bool CreatePoly(PolyNode *&L,int n) // β巨nʽ { - int i; PolyNode *p,*s; p=L; - for(i=1; i<=n; i++) // ʽϵָ + cout<<"ϵָ"<>s->coef>>s->exp; + cout<<""<>s->coef; + cout<<""<>s->exp; s->next=p->next; p->next=s; p=s; @@ -66,18 +70,18 @@ void PolyAdd(PolyNode *&LA,PolyNode *&LB) while (qa!=NULL && qb!=NULL ) // 2. { if (qa->exp < qb->exp ) // 2.1 LAС - { // paqa + {// pa=qa;qa=qa->next; } else if ( qa->exp > qb->exp ) //2.2 LA ݴ { - pb->next =qb->next; // qbӵpa֮ + pb->next =qb->next; qb->next=qa; pa->next=qb; pa=qb; qb=pb->next; } else // 2.3 LALBͬ - { + {// sum=qa->coef+qb->coef; // ϵ if (sum!=0 ) // 2.3.1 ϵͲΪ0 { @@ -86,7 +90,7 @@ void PolyAdd(PolyNode *&LA,PolyNode *&LB) pb->next=qb->next; delete qb; // 2.3.1.3ɾqb qb=pb->next; - } + } else // 2.3.2 ϵΪ0 { pa->next=qa->next; @@ -118,51 +122,14 @@ void DestroyPoly(PolyNode *&L) // L=NULL; // ͷָ } -void SortPoly(PolyNode *&L) // ʽ -{ - PolyNode *p1,*p2,*q,*r; // ò㷨 - p1=L;p2=p1->next; // p1p2ǰ - if(p2==NULL || p2->next==NULL) // ձֻ1ĶʽҪ - { - cout<<"Ҫ!"<next; // β - q=r->next; // qΪǰĺһ - while(q) // δ - { // Ԫ㿪ʼҲ - p1=L;p2=p1->next; - while(q->exp>p2->exp && p2!=q) // ǰݴ󣬲 - { - p1=p2;p2=p2->next; - } - if(p2==q) // ǰƶ - { - r=q; // β˳ - } - else // q뵽p2ǰ - { - r->next=q->next; // ժq - q->next=p1->next; // p1q - p1->next=q; - } - q=r->next; // һ账 - - } - return; -} - - - void dispmenu() {//ʾ˵ cout<>choice; switch(choice) { case 1: // ʽA InitPoly(LA); - cout<<"ʽ A "; + cout<<"ʽ A "<>m; CreatePoly(LA, m ); cout<<"Ķʽ A Ϊ"<>n; CreatePoly(LB, n ); cout<<"ĶʽBΪ"<>c; if(c=='A'||c=='a') DispPoly(LA); @@ -226,13 +183,13 @@ int main() case 5: //˳ DestroyPoly(LA); DestroyPoly(LB); - cout<<"bye-bye!"< +struct LNode // +{ + DT data; //򣬴洢Ԫֵ + LNode *next; //ָָһ +}; + + +//㷨2.14 յ +template +bool InitList(LNode
*&L) +{ + L=new LNode
; // 1.ͷ + if(!L) exit(1); // 2.ʧܣ˳ + L->next=NULL; // 3.ɹ + return true; // true +} + +//㷨2.15 β巨nԪ +template +bool CreateList_1(LNode
*&L,int n) +{ + LNode
*p,*s; + p=L; //1.ָʼָβ + cout<<""<; // 2.1 ½һs + if (!s) // 2.2 ʧܣfalse + return false; + cin>>s->data; // 2.3 ֵ + s->next=p->next; // 2.4 s ڱβ + p->next=s; + p=s; // 2.5 ָָ s + } + return true; // 3.ɹtrue +} + +//㷨2.16 ͷ巨nԪ +template +bool CreateList_2(LNode
*(&L),int n) +{ + LNode
*s; + cout<<""<; // 1.1 ½һ s + if (!s) // 1.2 ʧܣfalse + return false; + cin>>s->data; // 1.3 ֵ + s->next=L->next; // 1.4 s ͷ + L->next=s; + } + return true; // 1.ɹtrue +} + +//㷨2.17 +template +void DestroyList(LNode
*(&L)) // ͷռռ +{ + LNode
*p; + while(L) // 1. ǿ,ͷ㿪ʼͷŽ + { + p=L; // 1.1 ͷ + L=L->next; // 1.2 ͷָ + delete p; // 1.3 ͷűͷռڴ + } + L=NULL; // 2.ͷָָ +} + +//㷨2.18 ȡiԪ +template +bool GetElem_i(LNode
*L,int i, DT &e) +{ + LNode
*p; // 1.ʼ + p=L->next; // 1.1 ùָ룬׽㿪ʼ + int j=1; // 1.2 ʼ + while(p&&jnext;j++; + } + if(!p ||j>i ) // 3 δҵfalse + return false; + else // 4. ҵ + { + e=p->data; // ȡiԪֵ + return true; // true + } +} + +//㷨2.19 ֵΪeԪλ +template +int LocateElem_e(LNode
*L, DT e) +{ + + LNode
*p; // 1.ʼԪʼ + p=L->next; // 1.1Ԫʼ + int j=1; // 1.2 ֵ + while(p && p->data!=e) // 2.˳ + { + p=p->next; // 2.1δҵָ + j++; // 2.2 1 + } + if(p==NULL) // 3. жǷҵ + return 0; // 3.1ĩҵ0 + else + return j; // 3.2 ҵλ +} + +//㷨2.20 iԪ +template +bool InsertElem_i(LNode
*(&L),int i, DT e) +{ + + int j=0; + LNode
*p; // 1.ʼ + p=L; // ָʼ + while(p && jnext;// + j++; + } + if(!p||j>i-1) // 3.ж϶λǷɹ + return false; // 3.1 λʧܣܲ + else // 3.2 λɹ + { + LNode
*s; + s=new LNode
; // 3.2.1½ + s->data=e; // 3.2.2½㸳ֵ + s->next=p->next; // 3.2.3Sӵp֮ + p->next=s; + return true; // 3.2.4 ɹtrue + } + +} + +//㷨2.21 ɾiԪ +template +bool DeleElem_i(LNode
*(&L),int i) +{ + + LNode
*p,*q; //1.ʼùָ + p=L; //Ҵͷ㿪ʼ + int j=0; //ʼ + while(p->next && jnext; // + j++; + } + if(!p->next||j>i-1) //3.ɾλòɾ + return false; //false + else //4.ɾ + { + q=p->next; //4.1ݴɾλ + p->next=q->next; //4.2ժɾ + delete q; + return true; //4.3ɾɹtrue + } +} + + +//㷨2.22 ޸ĵiԪֵ +template +bool PutElem_i(LNode
*(&L),int i, DT e) +{ + LNode
*p; // 1.ʼ:ùָ + p=L->next; // ׽㿪ʼ + int j=1; // ʼ + while(p&&jnext;j++; + } + if(!p||j>i) // 3.Ԫز,false + return false; + else // 4.λɹ + { + p->data=e; // ޸Ԫֵ + return true; // true + } +} + + // ͷռռ +template +void ClearList(LNode
*(&L)) +{ + + LNode
*p; + while(L->next) // Ԫ㿪ʼͷŽ + { + p=L->next; + L->next=p->next; + delete p; + } + cout< +int ListLength(LNode
*L) +{ // 1.ʼ + int len=0; // 1.1 ֵ0 + LNode
*p; // 1.2ùָ + p=L; // ָͷ + while(p->next) // 2.к̽㣬 + { + len++;p=p->next; // 1ָ + } + return len; // 3.ر +} + +// +template +bool ListEmpty(LNode
*L) // +{ + if(L->next==NULL) + return true; //ձ1 + else + return false; //գ0 +} + + +//㷨2.24 +template +void DispList(LNode
*L) // ʾ +{ + LNode
*p; // 1. ùָ + p=L->next; // Ԫ㿪ʼ + while(p) // 2.ֵ + { + cout<data<<"\t"; + p=p->next; + + } + cout< //cout,cin +using namespace std; +#include "LinkList.h" + + +//㷨2.25 +void ReverseLinkList(LNode *&L) +{ + LNode *p,*q; // 1.ùָ + p=L->next; // ԭͷ㣬Ϊúͷ + L->next=NULL; + while(p) // 2. ժԭ㣬ͷ巨뵽 + { + q=p; // 2.1 qȡǰλ + p=p->next; // 2.2 pָһ + q->next=L->next; // 2.3 q 뵽ͷ֮ + L->next=q; + } +} + + + +void dispmenu() +{//ʾ˵ + cout< * L; + system("cls"); // ִϵͳcls + + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~4):"; + cin>>choice; + switch(choice) + { + case 1: // + InitList(L); + cout<<"ҪԪظ:"; + cin>>n; + cout< &L, int m) //㷨2.3 template -bool CreateList(SqList
&L,int n) //Ϊn˳ -{ - int i; +bool CreateList(SqList
&L,int n) +{//Ϊn˳ if(n>L.size) { cout<<"Ԫظڱܴ"<>L.elem[i-1]; L.length=n; return true; @@ -61,8 +60,7 @@ bool GetElem_i(SqList
L,int i, DT &e)// template int LocateElem_e(SqList
L, DT e) // ֵ { - int i; - for(i=0; i L, DT e) // template bool InsertElem_i(SqList
&L,int i, DT e) // ڵiλòԪ { - int j; if(L.length>=L.size) //1.ܲ return false; if(i<1 || i>L.length+1) //2.λòܲ return false; - for (j=L.length; j>=i; j--) //3. an~aiκ + for (int j=L.length; j>=i; j--) //3. an~aiκ L.elem[j]=L.elem[j-1]; L.elem[i-1]=e; L.length++; @@ -88,12 +85,11 @@ bool InsertElem_i(SqList
&L,int i, DT e) // template bool DeleElem_i(SqList
&L,int i) // ɾiԪ { - int j; if(L.length==0) //1.գɾ return false; if(i<1 || i>L.length) //2.ɾλòܲ return false; - for (j=i; j L) template void DispList(SqList
L) // { - int i; - for(i=0;i//cout,cin +using namespace std; +#include "SqList.h" + +char pause; + +void dispmenu() { + // ʾ˵ + cout << endl; + cout << "1-ϲA=AB\n"; + cout << "2-˳\n"; + cout << "3-ʽ\n"; + cout << "4-˳\n"; +} + +//㷨2.11 +template + +void Union(SqList
&La, SqList
Lb) { // La=LaLa + DT e; + int k; + for (int i = 1; i <= Lb.length; i++) { // ɨLb + GetElem_i(Lb, i, e); // 1. ȡLbĵiԪ + if (!LocateElem_e(La, e)) { // 2.La޴Ԫ + k = La.length + 1; // Laıβ + InsertElem_i(La, k, e); + } + } +} + +//㷨2.12 +template + +void ReverseSqList(SqList
&L) { // ˳Ԫ + DT t; + //if(L.length==0 || L.length==1) // 1.ձֻһԪأ + // return; + for (int i = 0; i < L.length / 2; i++) { // 2.L.elem[i]<-->L.elem[L.length-i-1] + t = L.elem[i]; + L.elem[i] = L.elem[L.length - i - 1]; + L.elem[L.length - i - 1] = t; + } + return; +} + +//㷨2.13 ʽ lc=la+lb +void PolyAdd(SqList la, SqList lb, SqList &lc) { + int i = 0; // 1.ʼôʼλ + while (i < la.length && i < lb.length) { // 2.ʽδ + lc.elem[i] = la.elem[i] + lb.elem[i]; // ͬλϵϵ + i++; + + } + if (la.length > lb.length) { // 3.laδ꣬lbѴ + while (i < la.length) { // lcȡlaʣ + lc.elem[i] = la.elem[i]; + i++; + + } + } else { // 3.lbδ꣬laѴ + while (i < lb.length) { // lcȡlbʣ + lc.elem[i] = lb.elem[i]; + i++; + + } + } +} + +//ʾඥʽ +void DispPoly(float A[], int n) { + int i; + cout << A[0] << "+"; + for (i = 1; i < n - 1; i++) + cout << A[i] << "x^" << i << " + "; + cout << A[i] << "x^" << i; + cout << endl; +} + + + +// +int main() { + //int i; + int na, nb, nc; + SqList La; // A + SqList Lb; // B + SqList Lc; // ˳ + SqList fa; // ʽA + SqList fb; // ʽB + SqList fc; // ͶʽC + + system("cls"); // + + int choice; + do { + dispmenu(); // ʾ˵ + cout << "Enter choice(1~4):"; + cin >> choice; + switch (choice) { + case 1: // 󼯺ϲ + cout << "AB\n"; + cout << "뼯AԪظ\n"; + cin >> na; + cout << "뼯BԪظ\n"; + cin >> nb; + InitList(La, na + nb); // A + CreateList(La, na); + InitList(Lb, nb); // B + CreateList(Lb, nb); + cout << "AΪ" << endl; // ʾA + DispList(La); + cout << "BΪ" << endl; // ʾB + DispList(Lb); + Union(La, Lb); // 󼯺ϲ + cout << "ABΪ:" << endl; // ʾ + DispList(La); + cout << endl; + DestroyList(La); + DestroyList(Lb); + break; + + case 2: // ˳ + cout << "Ҫ˳Ԫظ:"; + cin >> nc; + InitList(Lc, nc); + cout << endl; + CreateList(Lc, nc); + cout << "˳Ϊ" << endl; // ʾA + DispList(Lc); + ReverseSqList(Lc); + cout << "ú˳Ϊ" << endl; // ʾA + DispList(Lc); + cout << endl; + DestroyList(Lc); + break; + + case 3://ʽ + cout << "ʽAB\n"; + cout << "ʽA\n"; + cin >> na; + cout << "ʽB\n"; + cin >> nb; + InitList(fa, na); // ʽA + CreateList(fa, na); + InitList(fb, nb); // ʽB + CreateList(fb, nb); + cout << "ʽ A Ϊ " << endl; // ʾʽA + DispPoly(fa.elem, na); + cout << "ʽ B Ϊ " << endl; // ʾʽB + DispPoly(fb.elem, nb); + nc = (na >= nb) ? na : nb; + InitList(fc, nc); // ʽC + PolyAdd(fa, fb, fc); // ʽ C=A+B + cout << "ʽA + ʽB = " << endl; // ʾ + DispPoly(fc.elem, nc); + cout << endl; + DestroyList(fa); + DestroyList(fb); + DestroyList(fc); + break; + case 4: // ˳ + cout << "" << endl; + break; + default: // Чѡ + cout << "Invalid choice\n"; + break; + } + } while (choice != 4); + + return 0; +}//end of main function diff --git a/OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.cpp b/OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.cpp deleted file mode 100644 index 3ea49f1..0000000 --- a/OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.cpp +++ /dev/null @@ -1,152 +0,0 @@ - -#include //cout,cin -using namespace std; -#include "SqList.h" - -char pause; - - -void dispmenu() { - //ʾ˵ - cout << endl; - cout << "*** ˳ ***\n"; - cout << " 1-ʼ˳\n"; - cout << " 2-˳\n"; - cout << " 3-ȡiԪ\n"; - cout << " 4-ֵԪλ\n"; - cout << " 5-iԪ\n"; - cout << " 6-ɾiԪ\n"; - cout << " 7-޸ĵiԪ\n"; - cout << " 8-ձ\n"; - cout << " 9-\n"; - cout << " 10-\n"; - cout << " 11-\n"; - cout << " 12-ʾ\n"; - cout << " 13-ֵǰ\n"; - cout << " 0-˳\n"; -} - - -// -void main() { - int i; - int e, pre_e; - SqList L; //Ϊ20ԪΪ͵Ŀ˳ - system("cls"); //ִϵͳcls - - int choice; - do { - dispmenu(); //ʾ˵ - cout << "Enter choice(1~120 ˳):"; - cin >> choice; - switch (choice) { - case 1: //ʼԱ - cout << "Ҫ˳ijȣ"; - cin >> i; - cout << endl; - InitList(L, i); - cout << endl << "ɹ" << endl; - break; - case 2: //Ա - cout << "ҪԪظ:"; - cin >> i; - cout << endl; - CreateList(L, i); - cout << "˳ԪΪ\n"; //ʾԪ - DispList(L); - cout << endl; - break; - case 3: //ȡiԪ - cout << "Ԫ:"; - cin >> i; - cout << endl; - if (GetElem_i(L, i, e)) - cout << endl << "" << i << "ԪΪ:" << e << endl; - else - cout << endl << "Ԫزڣ" << endl; - break; - case 4: //ֵ - cout << "ҪѯԪֵ:"; - cin >> e; - i = LocateElem_e(L, e); - if (i) - cout << endl << e << "ǵ" << i << "Ԫ" << endl; - else - cout << endl << "ڴԪأ" << endl; - break; - case 5: // ڵiλòԪ - cout << "λã" << endl; - cin >> i; - cout << "Ԫֵ" << endl; - cin >> e; - if (InsertElem_i(L, i, e)) { - cout << endl << "ɹ" << endl; - DispList(L); - } else - cout << endl << "벻ɹ" << endl;; - break; - case 6: //ɾiԪ - cout << "ɾԪλã" << endl; - cin >> i; - if (DeleElem_i(L, i)) { - cout << endl << "ɾɹ" << endl; - DispList(L); - } else - cout << endl << "ɾʧܣ" << endl; - break; - case 7: //޸ĵiԪصֵ - cout << "޸Ԫλã" << endl; - cin >> i; - cout << "Ԫֵ" << endl; - cin >> e; - if (PutElem(L, i, e)) { - cout << endl << "޸ijɹ" << endl; - DispList(L); - } else - cout << endl << "޸ʧܣ" << endl; - break; - case 8: // ձ - ClearList(L); - break; - case 9: // - cout << "Ϊ" << ListLength(L) << endl; - break; - case 10: // - if (ListEmpty(L)) - cout << endl << "ձ" << endl; - else - cout << endl << "ǿձ" << endl; - break; - case 11: // δ - if (ListFull(L)) - cout << endl << "" << endl; - else - cout << endl << "" << endl; - break; - case 12: //ʾ - DispList(L); - cout << endl; - cin.get(pause); - system("pause"); - break; - case 13: - cout << "˳Ϊ\n"; - DispList(L); - cout << "ǰԪֵ\n"; - cin >> e; - if (PriorElem_e(L, e, pre_e)) - cout << e << "ǰԪΪ" << pre_e << endl; - else - cout << e << "ǰԪأ" << endl; - break; - case 0: //˳ - - cout << "bye-bye!" << endl; - break; - default: //Чѡ - cout << "Чѡ!\n"; - break; - } - } while (choice != 0); -}//end of main function - diff --git a/OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.h b/OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.h deleted file mode 100644 index 774f16e..0000000 --- a/OrigFiles/2-线性表/2-1-SqList-顺序表/SqList.h +++ /dev/null @@ -1,175 +0,0 @@ -template -struct SqList // ˳ -{ - DT *elem; // ַ - int length; // - int size; // -}; - -//㷨2.1 -template -bool PriorElem_e(SqList
L, DT e, DT &pre_e) // ֵΪeԪǰ -{ - int k; - k=LocateElem_e(L,e); // - if(k>1) - { - GetElem_i(L,k-1,pre_e); - return false; - } - else - return true; -} - -//㷨2.2 ʼ -template -bool InitList(SqList
&L, int m) -{ - L.elem=new DT[m]; // ռ - if(L.elem==NULL) - { - cout<<"δɹ"; // 벻ɹ˳ - exit (1); - } - L.length=0; // ɹԸֵձΪ0 - L.size=m; // Ϊm - return true; -} - -//㷨2.3 Ԫ -template -bool CreateList(SqList
&L,int n) -{ - int i; - if(n>L.size) // 1.Ԫظڱܴ - { - cout<<"Ԫظڱܴ"<>L.elem[i-1]; - L.length=n; // 3.ΪԪظ - return true; -} - -//㷨2.4 ˳ -template -void DestroyList(SqList
&L) -{ - delete [] L.elem; // 1.ͷűռ - L.length=0; // 2.Ըֵ - L.size=0; -} - -//㷨2.5 ȡiԪֵ -template -bool GetElem_i(SqList
L,int i, DT &e) -{ - if(i<1 || i>L.length) // 1.λ򲻺false - { - cout<<"Ԫزڣ"< -int LocateElem_e(SqList
L, DT e) -{ - for(int i=0; i -bool InsertElem_i(SqList
&L,int i, DT e) -{ - if(L.length>=L.size) // 1.ܲ - return false; - if(i<1 || i>L.length+1) // 2.λòܲ - return false; - for (int j=L.length; j>=i; j--) // 3. an~aiκ - L.elem[j]=L.elem[j-1]; - L.elem[i-1]=e; - L.length++; - return true; // ɹtrue -} - -//㷨2.8 ɾiԪ -template -bool DeleElem_i(SqList
&L,int i) -{ - if(L.length==0) // 1.գɾ - return false; - if(i<1 || i>L.length) // 2.ɾλòܲ - return false; - for (int j=i; j -bool PutElem(SqList
&L,int i, DT e) // ޸ĵiԪصֵ -{ - if(i<1 || i>L.length) // 1.λ򲻺޸ģ - return false; // false - L.elem[i-1]=e; // 2.õiԪֵ - return true; // 3.޸ijɹtrue -} - - // ˳ -template -void ClearList(SqList
&L) -{ - L.length=0; // ձΪ0 -} - - - // -template -int ListLength(SqList
L) -{ - return L.length; -} - - -template -bool ListEmpty(SqList
L) // -{ - if(L.length==0) // ձtrue - return true; - else - return false; // ǿձfalse -} - -template -bool ListFull(SqList
L) -{ - if(L.length==L.size) // true - return true; - else - return false; // false -} - -//㷨2.10 -template -void DispList(SqList
L) -{ - int i; - for(i=0;i//cout,cin -using namespace std; -#include "SqList.h" - -char pause; - -void dispmenu() -{ // ʾ˵ - cout<<"\n*** ˳Ӧ ***\n"; - cout<<" 1-ϲA=AB\n"; - cout<<" 2-˳\n"; - cout<<" 3-ʽ\n"; - cout<<" 0-˳\n"; -} - - -//㷨2.11 -template -void Union(SqList
&La, SqList
Lb) // La=LaLa -{ - DT e; - int k,i; - for(i=1;i<=Lb.length;i++) // ɨLb - { - GetElem_i(Lb,i,e); // 1. ȡLbĵiԪ - if(!LocateElem_e(La,e)) // 2.La޴Ԫ - { - k=La.length+1; // Laıβ - InsertElem_i(La,k,e); - } - } -} - -//㷨2.12 -template -void ReverseSqList(SqList
&L) // ˳Ԫ -{ - DT t; - int i; - for(i=0; iL.elem[L.length-i-1] - { - t=L.elem[i]; - L.elem[i]=L.elem[L.length-i-1]; - L.elem[L.length-i-1]=t; - } - return; -} - -//㷨2.13 ʽ lc=la+lb -void PolyAdd(SqList la, SqList lb, SqList &lc) -{ - int i=0; // 1.ʼôʼλ - while(ilb.length) // 3.laδ꣬lbѴ - { - while(i La,Lb; // AB - SqList Lc; // ˳ - SqList fa,fb,fc; // ʽABC - - system("cls"); // - - int choice; - do - { - dispmenu(); // ʾ˵ - cout<<"Enter choice(1~4,0˳):"; - cin>>choice; - switch(choice) - { - case 1: // 󼯺ϲ - cout<<"AB\n"; - cout<<"뼯AԪظ"; - cin>>na; - cout<<"뼯BԪظ"; - cin>>nb; - InitList(La,na+nb); // A - cout<<"AԪ\n"; - CreateList(La,na); - InitList(Lb,nb); // B - cout<<"BԪ\n"; - CreateList(Lb,nb); - cout<<"AΪ"<>nc; - InitList(Lc,nc); - cout<>na; - InitList(fa,na); - cout<<"ʽAϵ\n"; - CreateList(fa,na); - cout<<"\nʽB\n"; // ʽB - cout<<"ʽB"; - cin>>nb; - InitList(fb,nb); - cout<<"ʽBϵ\n"; - CreateList(fb,nb); - cout<<"\nʽ A Ϊ "<=nb)?na:nb; - InitList(fc,nc); // ʽC - PolyAdd(fa,fb,fc); // ʽ C=A+B - cout<<"\nʽA + ʽB = "< //cout,cin +using namespace std; +#include "LinkQueue.h" + + +void dispmenu() +{//ʾ˵ + cout< Q; + system("cls");//ִϵͳcls + + int choice; + do + { + dispmenu();//ʾ˵ + cout<<"Enter choice(1~8):"; + cin>>choice; + switch(choice) + { + case 1://ʼ + InitQueue(Q); + cout<>e; + cout< +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; + if(!p) return false; //ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // + Q.rear->next=p; + Q.rear=p; + return true; // ɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿ + p=Q.front->next; + e=p->data; + Q.front->next=p->next; + if(Q.rear==p) Q.rear=Q.front; //һԪرɾ + delete p; + return true; // ɾɹtrue +} + + +//㷨3.23 +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; //ӿ + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + //LNode
*p; + if(Q.front==Q.rear) return false; + e=Q.rear->data; + return true; // ɾɹtrue +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) + return true; + else + return false; +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< #include using namespace std; #include"LinkStack.h" -//㷨3.11 ŵƥ -bool match(string exp) +//ŵƥ +bool Matching() { - //ʽ(ʽ"#")"[""]""("")"Ƿƥ䣬ƥ䣬򷵻true򷵻false + //ʽǷȷƥ䣬ƥ䣬򷵻true򷵻false //ʽԡ# SNode *S; InitStack(S); int flag=1; // DzҽԿѭؽ - char ch; - char e,x; - int i=0; - ch=exp[i++]; // һַ - while(ch!='#' && flag) + char c; + char x; + cin>>c; // һַ + while(c!='#' && flag) { - switch (ch) - { - case '[': - case '(': // ţѹջ + switch (c){ + case '[': + case '(': // ţѹջ cout<<"Žջ"<>c; //һַ }//while - if (StackEmpty(S) && flag ) // ջұ־Ϊtrue,ƥ䣬true + DestroyStack(S); + if (StackEmpty(S) && flag ) return true; - else // Ųƥ,false + else return false; -}//match - - +}//Matching int main() { int flag; - string exp; cout<<"ƥıʽԡ#"<>exp; - flag = match(exp); + flag = Matching(); if(flag) cout<<"ƥɹ"< -#include -using namespace std; - -struct dancer // Ϣ -{ string name; // - char sex; // Ա -}; - - -struct Node // н -{ dancer data; // - Node* next; // ָָ -}*front,*rear; // ͷβ - -struct LinkQueue -{ Node *front; - Node *rear; -}; // жӺŮ - -void InitialLinkQueue(LinkQueue &Q) // ʼ -{ - Q.front=new Node; - Q.front->next=NULL; - Q.rear=Q.front; -} - -void DestroyLinkQueue(LinkQueue &Q) // ٶ -{ Node *p; - while(Q.front!=NULL) - { p=Q.front; - Q.front=Q.front->next; - delete p; - } -} - -void EnQueue(LinkQueue &Q,dancer &e) // -{ - Node *s=new Node; - s->data=e; - s->next=Q.rear->next; - Q.rear->next=s; - Q.rear=s; -} - -bool IsEmpty(LinkQueue Q) // жӿ -{ - if (Q.front==Q.rear) - return true; - else - return false; -} - -bool DeQueue(LinkQueue &Q,dancer &e) // -{ - Node *p; - if (IsEmpty(Q)) // ӿգ - { - cout<<"Ϊգ޷У"; - return false; - } - p=Q.front->next; - e=p->data; - Q.front->next=p->next; - if (p==Q.rear) // ֻһԪأ - Q.rear=Q.front; // ޸Ķβָ - delete p; - return true; -} - -bool GetHead(LinkQueue Q,dancer &e) -{ if(IsEmpty(Q)) // ӿ - { - cout<< "Ϊգ޷ȡöԪأ"; - return false; - } - e=Q.front->next->data; // ضͷԪ - return true; -} - -void QueueTranverse(LinkQueue Q) // -{ Node *p; - p=Q.front->next; - while(p!=NULL) - { cout<<(p->data).name<<" "; - p=p->next; - } - cout<>person[i].sex; - cin>>person[i].name; - } - cout<<"ߣ"<"<>num; - person=new dancer[num]; - EntranHall(person, num); // 볡 - DancePartner(person,num); // ƥ - return 0; -} - diff --git a/OrigFiles/3-特殊线性表/3-LinkQueue(链队)/LinkQueue.cpp b/OrigFiles/3-特殊线性表/3-LinkQueue(链队)/LinkQueue.cpp similarity index 83% rename from OrigFiles/3-特殊线性表/3-LinkQueue(链队)/LinkQueue.cpp rename to OrigFiles/3-特殊线性表/3-LinkQueue(链队)/LinkQueue.cpp index 42dc18a..2c7f3e2 100644 --- a/OrigFiles/3-特殊线性表/3-LinkQueue(链队)/LinkQueue.cpp +++ b/OrigFiles/3-特殊线性表/3-LinkQueue(链队)/LinkQueue.cpp @@ -10,9 +10,8 @@ void dispmenu() cout<<"3-Ԫس\n"; cout<<"4-ȡͷԪ\n"; cout<<"5-ȡβԪ\n"; - cout<<"6-ն\n"; - cout<<"7-ӿ\n"; - cout<<"8-ʾԪ\n"; + cout<<"6-ӿ\n"; + cout<<"7-ʾԪ\n"; cout<<"0-˳\n"; } @@ -29,7 +28,7 @@ int main() do { dispmenu(); // ʾ˵ - cout<<"ѡ(1~80 ˳):"; + cout<<"ѡ(1~70 ˳):"; cin>>choice; switch(choice) { @@ -37,7 +36,7 @@ int main() InitQueue(Q); cout<>e; cout< * S; + LNode * S; system("cls"); // int choice; do @@ -66,26 +67,24 @@ int main() else cout< -struct SNode // +struct LNode // { - DT data; // 򣬴洢Ԫֵ - SNode *next; // ָָһ + DT data; //򣬴洢Ԫֵ + LNode *next;//ָָһ }; //㷨3.6 template -bool InitStack(SNode
*&S) // ջ +void InitStack(LNode
*&S)//ջ { + //L=new LNode
; //ͷ + //if(!L) exit(1); //ʧܣ S=NULL; - return true; } //㷨3.7 template -void DestroyStack(SNode
*(&S)) // ͷջռڴ +void DestroyStack(LNode
*(&S))//ͷջ { - SNode
*p; - while(S) //ͷ㿪ʼͷŽ + LNode
*p; + while(S)//ͷ㿪ʼͷŽ { p=S; S=S->next; delete p; } - S=NULL; + //L=NULL;//ͷָ } - - //㷨3.8 template -bool Push(SNode
*&S,DT e) +bool Push(LNode
*&S,DT e) { - SNode
*p; - p=new SNode
; - if(!p) - return false; //ʧܣ + LNode
*p; + p=new LNode
; + if(!p) return false; //ʧܣ p->data=e; // ½㸳ֵ p->next=S; //Sӵp֮ S=p; @@ -47,9 +45,9 @@ bool Push(SNode
*&S,DT e) //㷨3.9 template -bool Pop(SNode
*&S,DT &e) +bool Pop(LNode
*&S,DT &e) { - SNode
*p; + LNode
*p; if(S==NULL) return false; p=S; e=p->data; @@ -61,9 +59,9 @@ bool Pop(SNode
*&S,DT &e) //㷨3.10 template -bool GetTop(SNode
*S,DT &e) +bool GetTop(LNode
*S,DT &e) { - SNode
*p; + LNode
*p; if(S==NULL) return false; p=S; e=p->data; @@ -72,7 +70,7 @@ bool GetTop(SNode
*S,DT &e) //ջ template -bool StackEmpty(SNode
*S) +bool StackEmpty(LNode
*S) { if(S==NULL) return true; @@ -82,9 +80,9 @@ bool StackEmpty(SNode
*S) //ʾջ template -void DispStack(SNode
*S) +void DispStack(LNode
*S) { - SNode
*p; + LNode
*p; p=S; while(p) { diff --git a/OrigFiles/3-特殊线性表/3-SqQueue(循环队列)/SqQueue.cpp b/OrigFiles/3-特殊线性表/3-SqQueue(循环队列)/SqQueue.cpp deleted file mode 100644 index bbaa624..0000000 --- a/OrigFiles/3-特殊线性表/3-SqQueue(循环队列)/SqQueue.cpp +++ /dev/null @@ -1,126 +0,0 @@ - -#include//cout,cin -using namespace std; -#include "SqQueue.h" - -char pause; - - -void dispmenu() //˵ -{ - cout< Q; // ԪΪ͵˳ - system("cls"); // - int choice; - do - { - dispmenu(); //ʾ˵ - cout<<"ѡ(1~100 ˳):"; - cin>>choice; - switch(choice) - { - case 1: // ʼ˳ - cout<<"Ҫ˳еij"; - cin>>i; - cout<>e; - cout<>e; if(Push(S,e)) { - cout<<"ջɹջջԪΪ"< S) cout< -void ClearStack(SqStack
&S) -{ - S.top=-1; - -} - -template -int StackFull(SqStack
S) -{ - if(S.top==S.stacksize-1) - return 1; - else - return 0; - -} - - diff --git a/OrigFiles/3-特殊线性表/3-ValExpression(表达式计算)/Expresion.cpp b/OrigFiles/3-特殊线性表/3-ValExpression(表达式计算)/Expresion.cpp index bdc4d92..4153759 100644 --- a/OrigFiles/3-特殊线性表/3-ValExpression(表达式计算)/Expresion.cpp +++ b/OrigFiles/3-特殊线性表/3-ValExpression(表达式计算)/Expresion.cpp @@ -1,6 +1,7 @@ #include //cout,cin using namespace std; #include"SqStack.h" +#include // atoi() char pause; @@ -51,9 +52,9 @@ char Precede(char t1,char t2) // } -bool In(char ch) // ж ch ǷΪ +bool In(char c) // ж c ǷΪ { - switch(ch) + switch(c) { case'+': case'-': @@ -69,21 +70,21 @@ bool In(char ch) // float Operate(float a,char theta,float b) { // ʵʩһ - float ch; + float c; switch(theta) { - case'+':ch=a+b; + case'+':c=a+b; break; - case'-':ch=a-b; + case'-':c=a-b; break; - case'*':ch=a*b; + case'*':c=a*b; break; - case'/':ch=a/b; + case'/':c=a/b; } - return ch; + return c; } -//㷨3.12 + float Val_Exp(char *exp) // ׺ʽֵ { SqStack OP; // ջ @@ -91,82 +92,82 @@ float Val_Exp(char *exp) // InitStack(OP,30); InitStack(OD,30); char theta; - float a,b,result; - char ch,x; // ɼ̽յַ + float a,b,d; + char c,x; // ɼ̽յַ char z[6]; // ŷַ int i; Push(OP,'='); // # DZʽ־ - ch=*exp++; + c=*exp++; GetTop(OP,x); - while(ch!='='||x!='=') + while(c!='='||x!='=') { - if(ch>='0'&&ch<='9'||ch=='.') // ch Dz + if(c>='0'&&c<='9'||c=='.') // c Dz { i=0; do { - z[i]=ch; + z[i]=c; i++; - ch=*exp++; - } while(ch>='0'&&ch<='9'||ch=='.'); + c=*exp++; + } while(c>='0'&&c<='9'||c=='.'); z[i]='\0'; - result=atof(z); // ַתΪʹresult - Push(OD,result); + d=atof(z); // ַתΪʹd + Push(OD,d); } - else if(In(ch)) // 7֮һ - switch(Precede(x,ch)) + else if(In(c)) // 7֮һ + switch(Precede(x,c)) { - case'<':Push(OP,ch); // ջԪȨ - ch=*exp++; + case'<':Push(OP,c); // ջԪȨ + c=*exp++; break; case'=':Pop(OP,x); // Ųһַ - ch=*exp++; + c=*exp++; break; case'>':Pop(OP,theta); // ջջ Pop(OD,b); Pop(OD,a); Push(OD,Operate(a,theta,b)); } - else // chǷǷַ + else // cǷǷַ { cout<<"ERROR3"< OP; InitStack(OP,30); Push(OP,'='); // # DZʽ־ cout<<"׺ʽ"<='0'&&ch<='9')||ch=='.') + if((c>='0'&&c<='9')||c=='.') { - postexp[i++]=ch; - ch=*exp++; + postexp[i++]=c; + c=*exp++; } - if(In(ch)) // 7֮һ + if(In(c)) // 7֮һ { postexp[i++]=' '; GetTop(OP,x); - switch(Precede(x,ch)) + switch(Precede(x,c)) { - case'<':Push(OP,ch); // ջԪȨ - ch=*exp++; + case'<':Push(OP,c); // ջԪȨ + c=*exp++; break; case'=':Pop(OP,x); // Ųһַ - ch=*exp++; + c=*exp++; break; case'>': Pop(OP,postexp[i++]); // ջ @@ -179,43 +180,42 @@ void CreatePostExp(char * exp,char * &postexp) // DestroyStack(OP); } -//㷨3.13 float Val_PostExp(char *postexp) // ׺ʽֵ { int i; char z[6]; - float result=0,d=0,a,b; - char ch; + float v=0,d=0,a,b; + char c; SqStack OD; InitStack(OD,30); - ch=*postexp++; - while(ch!='\0') + c=*postexp++; + while(c!='\0') { - if(ch>='0'&&ch<='9'||ch=='.') // chΪ + if(c>='0'&&c<='9'||c=='.') // cΪ { i=0; do { - z[i++]=ch; - ch=*postexp++; // ȡһ - } while(ch>='0'&&ch<='9'||ch=='.'); + z[i++]=c; + c=*postexp++; // ȡһ + } while(c>='0'&&c<='9'||c=='.'); z[i]='\0'; - d=atof(z); // ַתΪʹresult + d=atof(z); // ַתΪʹd Push(OD,d); // ջ } - if(In(ch)) // chΪ + if(In(c)) // cΪ { - Pop (OD,a); Pop (OD,b); - Push (OD,Operate(b,ch,a)); - ch=*postexp++; + Pop (OD,a); + Push (OD,Operate(a,c,b)); + c=*postexp++; } - ch=*postexp++; + c=*postexp++; } - Pop (OD,result); - DestroyStack(OD); - return result; + Pop (OD,v); + //DestoryStack(OD); + return v; } @@ -224,6 +224,7 @@ void main() { //int i; char exp[20]="(2.2+5)+4*(5-3.1)="; + char *postexp; postexp=new char[30]; *postexp='\0'; @@ -275,7 +276,7 @@ void main() cout<<"\nУBye-Bye!"< + + + + + diff --git a/OrigFiles/3-特殊线性表/BracketsMatch(括号匹配)/BracketsMatch.cpp b/OrigFiles/3-特殊线性表/BracketsMatch(括号匹配)/BracketsMatch.cpp new file mode 100644 index 0000000..23c7bd6 --- /dev/null +++ b/OrigFiles/3-特殊线性表/BracketsMatch(括号匹配)/BracketsMatch.cpp @@ -0,0 +1,107 @@ +/***ջʵƥ***/ +#include +using namespace std; + +#define OK 1 +#define ERROR 0 +#define OVERFLOW -2 +typedef char SElemType; +typedef int Status; +typedef struct SNode{ + int data; + struct SNode *next; +}SNode,*LinkStack; + +Status InitStack(LinkStack &S) +{ + S = NULL; + return OK; +} +bool StackEmpty(LinkStack S) +{ + if(!S) + return true; + return false; +} +Status Push(LinkStack &S,SElemType e) +{ + SNode *p = new SNode; + if(!p) + { + return OVERFLOW; + } + p->data = e; + p->next = S; + S = p; + return OK; +} +Status Pop(LinkStack &S,SElemType &e) +{ + SNode *p; + if(!S) + return ERROR; + e = S->data; + p = S; + S = S->next; + delete p; + return OK; +} +Status GetTop(LinkStack &S,SElemType &e) +{ + if(!S) + return ERROR; + e = S->data; + return OK; +} + +//ŵƥ +Status Matching(LinkStack S) +{ + //ʽǷȷƥ䣬ƥ䣬򷵻true򷵻false + //ʽԡ# + int flag=1; //DzҽԿѭؽ + char c; + SElemType x; + cin>>c; //һַ + while(c!='#' && flag) + { + switch (c){ + case '[': + case '(': //ţѹջ + Push(S,c); + break; + case ')' : //š)ݵǰջԪصֵ + GetTop(S,x); + if (!StackEmpty(S) && x=='(' ) //ջǿջԪǡ(ƥɹ + Pop(S,x); + else + flag=0; //ջջջԪزǡ(Ƿ + break; + case ']' : //š]ݵǰջԪصֵ + GetTop(S,x); + if (!StackEmpty(S) && x=='[' ) //ջԪǡ[ƥɹ + Pop(S,x); + else + flag=0; //ջջջԪزǡ[Ƿ + break; + }//switch + cin>>c; //һַ + }//while + if (StackEmpty(S) && flag ) + return 1; + else + return 0; +}//Matching + +int main() +{ + LinkStack S; + InitStack(S); + cout<<"ƥıʽԡ#"< + + + + + + + + + diff --git a/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cbp b/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cbp new file mode 100644 index 0000000..5c2c7f5 --- /dev/null +++ b/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cbp @@ -0,0 +1,40 @@ + + + + + + diff --git a/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cpp b/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cpp new file mode 100644 index 0000000..d8b7c1f --- /dev/null +++ b/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.cpp @@ -0,0 +1,117 @@ +#include +#include +using namespace std; + +struct dancer +{ string name; + char sex; +}; + +struct Node +{ dancer data; + Node* next; +}*front,*rear; + +struct LinkQueue +{ Node *front; + Node *rear; +}Gentleman, Lady; + +void InitialLinkQueue(LinkQueue& queue) +{ queue.front=new Node; + queue.front->next=NULL; + queue.rear=queue.front; +} + +void DeleteLinkQueue(LinkQueue& queue) +{ Node *p; + while(queue.front!=NULL) + { p=queue.front; + queue.front=queue.front->next; + delete p; + } +} + +void EnQueue(LinkQueue& queue,dancer& value) +{ + Node* s=new Node; + s->data=value; + s->next=queue.rear->next; + queue.rear->next=s; + queue.rear=s; +} + +int IsEmpty(LinkQueue queue) +{ + if (queue.front==queue.rear) return 1; + else return 0; +} + +dancer DeQueue(LinkQueue &queue) +{ dancer x; + Node *p; + if (IsEmpty(queue)) throw "Ϊգ޷У"; + p=queue.front->next; + x=p->data; + queue.front->next=p->next; + if (p==queue.rear) queue.rear=queue.front; + delete p; + return x; +} + +dancer GetHead(LinkQueue queue) +{ if (IsEmpty(queue)) throw "Ϊգ޷ȡöԪأ"; + return queue.front->next->data; +} + +void QueueTranverse(LinkQueue queue) +{ Node *p; + p=queue.front->next; + while(p!=NULL) + { cout<<(p->data).name<<" "; + p=p->next; + } + cout<>num; + + InitialLinkQueue(Gentleman); + InitialLinkQueue(Lady); + + for(int i=0;i>sex; + string name; + cin>>name; + dancer newdancer; + newdancer.name=name; + newdancer.sex=sex; + if(sex=='F') + EnQueue(Lady,newdancer); + if(sex=='M') + EnQueue(Gentleman,newdancer); + } + + while ( (!IsEmpty(Gentleman)) && (!IsEmpty(Lady)) ) + cout<"< + + diff --git a/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.layout b/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.layout new file mode 100644 index 0000000..8f5dcc4 --- /dev/null +++ b/OrigFiles/3-特殊线性表/DancePartner(舞伴问题)/DancePartner.layout @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cbp b/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cbp new file mode 100644 index 0000000..1a44a30 --- /dev/null +++ b/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cbp @@ -0,0 +1,38 @@ + + + + + + diff --git a/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cpp b/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cpp new file mode 100644 index 0000000..159642f --- /dev/null +++ b/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.cpp @@ -0,0 +1,147 @@ +/***ջʵֱʽֵ***/ +#include +#include +using namespace std; + +const char oper[7] = {'+','-','*','/','(',')','#'}; +#define OK 1 +#define ERROR 0 +#define OVERFLOW -2 +typedef char SElemType; +typedef int Status; +typedef struct SNode{ + int data; + struct SNode *next; +}SNode,*LinkStack; + +Status InitStack(LinkStack &S) +{ + S = NULL; + return OK; +} +bool StackEmpty(LinkStack S) +{ + if(!S) + return true; + return false; +} +Status Push(LinkStack &S,SElemType e) +{ + SNode *p = new SNode; + if(!p) + { + return OVERFLOW; + } + p->data = e; + p->next = S; + S = p; + return OK; +} +Status Pop(LinkStack &S,SElemType &e) +{ + SNode *p; + if(!S) + return ERROR; + e = S->data; + p = S; + S = S->next; + delete p; + return OK; +} +Status GetTop(LinkStack &S,SElemType &e) +{ + if(!S) + return ERROR; + e = S->data; + return OK; +} +bool In(char ch) +{//жchǷΪ + for(int i = 0;i < 7;i ++) + { + if(ch == oper[i]) + { + return true; + } + } + return false; +} +char Precede(char theta1,char theta2) +{//жȼ + if((theta1 == '('&&theta2 == ')')||(theta1 == '#'&&theta2 == '#')) + { + return '='; + } + else if(theta1 == '('||theta1 == '#'||theta2 == '(' + ||(theta1 == '+'||theta1 == '-')&&(theta2 == '*'||theta2 == '/')) + { + return '<'; + } + else + return '>'; +} +char Operate(char first,char theta,char second) +{// + switch(theta) + { + case '+': + return (first - '0')+(second - '0')+48; + case '-': + return (first - '0')-(second - '0')+48; + case '*': + return (first - '0')*(second - '0')+48; + case '/': + return (first - '0')/(second - '0')+48; + } + return 0; +} + +//ʽֵ +char EvaluateExpression() +{ + // ʽֵ㷨OPTROPNDֱΪջͲջ + // OP Ϊ + LinkStack OPTR,OPND; + char ch,theta,a,b,x,top; + InitStack ( OPTR); + Push (OPTR,'#'); + InitStack ( OPND); + ch = getchar(); + while (ch != '#' || (GetTop(OPTR,top) ,top!= '#') ) + { + if (!In(ch)) + { + Push(OPND, ch); + ch = getchar(); + } // chջ + else + switch (GetTop(OPTR, top),Precede(top,ch)) + { //ȽOPTRջԪغchȨ + case '<': //ǰַchѹOPTRջһַch + Push(OPTR, ch); + ch = getchar(); + break; + case '>': //OPTRջӦ㣬ջ + Pop(OPTR, theta); + Pop(OPND, b); + Pop(OPND, a); + Push(OPND, Operate(a, theta, b)); + break; + case '=': //Ųһַ + Pop(OPTR, x); + ch = getchar(); + break; + } // switch + } // while + GetTop(OPND,ch); + return ch; +} // EvaluateExpression + +int main() +{ + cout<<"Ҫıʽͽ0-9ķΧڣ#"< + + diff --git a/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.layout b/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.layout new file mode 100644 index 0000000..7c0769e --- /dev/null +++ b/OrigFiles/3-特殊线性表/EvaluateExpression(表达式计算)/EvaluateExpression.layout @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/OrigFiles/3-特殊线性表/LinkQueue(链队)/LinkQueue.cpp b/OrigFiles/3-特殊线性表/LinkQueue(链队)/LinkQueue.cpp new file mode 100644 index 0000000..2076a14 --- /dev/null +++ b/OrigFiles/3-特殊线性表/LinkQueue(链队)/LinkQueue.cpp @@ -0,0 +1,97 @@ +#include //cout,cin +using namespace std; +#include "LinkQueue.h" + +void dispmenu() +{//ʾ˵ + cout< Q; + system("cls"); //ִϵͳcls + + int choice; + do + { + dispmenu(); //ʾ˵ + cout<<"Enter choice(1~8):"; + cin>>choice; + switch(choice) + { + case 1: //ʼ + InitQueue(Q); + cout<>e; + cout< &Q)// Q.front=Q.front->next; delete p; } - Q.rear=Q.front=NULL; -} - -template -void ClearQueue(LinkQueue
&Q) // -{ - QNode
*p; - while(Q.front->next) //ӶͷʼͷŽ - { - p=Q.front->next; - Q.front->next=p->next; - delete p; - } - Q.front->next=NULL; // ն - Q.rear=Q.front; } //㷨3.21 diff --git a/OrigFiles/3-特殊线性表/LinkStack(链栈)/LinkStack.cpp b/OrigFiles/3-特殊线性表/LinkStack(链栈)/LinkStack.cpp new file mode 100644 index 0000000..0d403a4 --- /dev/null +++ b/OrigFiles/3-特殊线性表/LinkStack(链栈)/LinkStack.cpp @@ -0,0 +1,88 @@ +#include //cout,cin +using namespace std; +#include "LinkStack.h" + + +void dispmenu() +{//ʾ˵ + cout< * S; + system("cls"); // + int choice; + do + { + dispmenu(); //ʾ˵ + cout<<"Enter choice(1~7):"; + cin>>choice; + switch(choice) + { + case 1: //ʼջ + InitStack(S); + cout<>e; + cout< +struct LNode // +{ + DT data; //򣬴洢Ԫֵ + LNode *next;//ָָһ +}; + + +//㷨3.6 +template +void InitStack(LNode
*&S)//ջ +{ + //L=new LNode
; //ͷ + //if(!L) exit(1); //ʧܣ + S=NULL; +} + +//㷨3.7 +template +void DestroyStack(LNode
*(&S))//ͷջ +{ + LNode
*p; + while(S)//ͷ㿪ʼͷŽ + { + p=S; + S=S->next; + delete p; + } + //L=NULL;//ͷָ +} + +//㷨3.8 +template +bool Push(LNode
*&S,DT e) +{ + LNode
*p; + p=new LNode
; + if(!p) return false; //ʧܣ + p->data=e; // ½㸳ֵ + p->next=S; //Sӵp֮ + S=p; + return true; // ɹtrue +} + +//㷨3.9 +template +bool Pop(LNode
*&S,DT &e) +{ + LNode
*p; + if(S==NULL) return false; + p=S; + e=p->data; + S=S->next; + delete p; + return true; // ɾɹtrue +} + + +//㷨3.10 +template +bool GetTop(LNode
*S,DT &e) +{ + LNode
*p; + if(S==NULL) return false; + p=S; + e=p->data; + return true; // ɾɹtrue +} + +//ջ +template +bool StackEmpty(LNode
*S) +{ + if(S==NULL) + return true; + else + return false; +} + +//ʾջ +template +void DispStack(LNode
*S) +{ + LNode
*p; + p=S; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout<//cout,cin +using namespace std; +#include "SqQueue.h" + +char pause; + + +void dispmenu() +{//ʾ˵ + cout< Q;//Ϊ20ԪΪ͵Ŀ˳ջ + system("cls");//ִϵͳcls + + int choice; + do + { + dispmenu();//ʾ˵ + cout<<"Enter choice(1~9):"; + cin>>choice; + switch(choice) + { + case 1://ʼ˳ + cout<<"Ҫ˳еij"; + cin>>i; + cout<>e; + cout< +struct SqQueue //˳ +{ + DT *base; //ַ + int front; //ͷָ + int rear; //βָ + int queuesize;// +}; + +//ʵ +//㷨3.14 +template +void InitQueue(SqQueue
&Q, int m) +{//һջΪmĿն + Q.base=new DT[m];// пռ + if(Q.base==NULL) + { + cout<<"δɹ"; + exit (1); + } + Q.front=Q.rear=0; + Q.queuesize=m; +} + + +//㷨3.15 +template +void DestroyQueue(SqQueue
&Q)// +{//ͷŶпռ + delete [] Q.base; + Q.front=Q.rear=0; + Q.queuesize=0; +} + + +//㷨3.16 +template +bool EnQueue(SqQueue
&Q,DT e) +{ + if((Q.rear+1)%Q.queuesize==Q.front) // + return false; + Q.base[Q.rear]=e; + Q.rear=(Q.rear+1)% Q.queuesize; + return true; // ɹtrue +} + +//㷨3.17 +template +bool DeQueue(SqQueue
&Q,DT &e) +{ + if(Q.front==Q.rear) //ӿ + return false; + e=Q.base[Q.front]; + Q.front=(Q.front+1)%Q.queuesize; + return true; // ɾɹtrue +} + + +//㷨3.18 +template +bool GetHead(SqQueue
Q,DT &e) +{ + if(Q.front==Q.rear) //ӿ + return false; + e=Q.base[Q.front]; + return true; //true +} + +//ȡβԪ +template +bool GetTail(SqQueue
Q,DT &e) +{ + if(Q.front==Q.rear) //ӿ + return false; + e=Q.base[(Q.rear - 1+Q.queuesize) % Q.queuesize]; + return true; //true +} + +//ӿ +template +bool QueueEmpty(SqQueue
Q) +{ + if(Q.front==Q.rear) + return true; + else + return false; +} + +// +template +bool QueueFull(SqQueue
Q) +{ + if((Q.rear+1)%Q.queuesize==Q.front) // + return true; + else + return false; +} + +//ʾ +template +void DispQueue(SqQueue
Q) +{ + int i=Q.front; + while(i!=Q.rear) + { + cout<//cout,cin +using namespace std; +#include "SqStack.h" + +char pause; + + +void dispmenu() +{ //ʾ˵ + cout< S;//Ϊ20ԪΪ͵Ŀ˳ջ + system("cls"); // + + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~7):"; + cin>>choice; + switch(choice) + { + case 1: // ʼ˳ջ + cout<<"Ҫ˳ջij"; + cin>>i; + cout<>e; + cout< +struct SqStack // ˳ջ +{ + DT *base; // ջַ + int top; // ջָ + int stacksize; // ջ +}; + +//ʵ +//㷨3.1 // ʼջ +template +void InitStack(SqStack
&S, int m) +{ + S.base=new DT[m]; // ջռ + if(S.base==NULL) // ʧܣ˳ + { + cout<<"δɹ"; + exit (1); + } + S.top=-1; // ÿջ + S.stacksize=m; +} + + +//㷨3.2 // ջ +template +void DestroyStack(SqStack
&S) +{ + delete [] S.base; // ͷջռ + S.top=-1; + S.stacksize=0; // ջ +} + + +//㷨3.3 // ջ +template +bool Push(SqStack
&S,DT e) +{ + if(S.top==S.stacksize-1) // ջջ + return false; // false + S.top++; + S.base[S.top]=e; + return true; // ջɹtrue +} + +//㷨3.4 // ջ +template +bool Pop(SqStack
&S,DT &e) +{ + if(S.top==-1) // ջ + return false; // false + e=S.base[S.top]; // ȡջԪ + S.top--; // ջָ + return true; // ջɹtrue +} + + +//㷨3.5 // ȡջԪ +template +bool GetTop(SqStack
S,DT &e) +{ + if(S.top==-1) // ջ + return false; // false + e=S.base[S.top]; // ջǿգȡջԪ + return true; // true +} + + // ջ +template +bool StackEmpty(SqStack
S) +{ + if(S.top==-1) // ջtrue + return true; + else // ջfalse + return false; +} + + //ʾջ +template +void DispStack(SqStack
S) +{ + int i=S.top; + while(i>=0) + { + cout<//cout,cin +#include"process.h"//exit() +#include"stdio.h"//EOF,NULL + +struct MTNode // Ԫ +{ + int i,j; // кţк + int e; // Ԫ + MTNode *next; // ָͬһ +}; + +typedef struct +{ + int mu,nu,tu; // Ԫ + MTNode **rops; // Ÿͷָ +}LMatrix; + +int cmp(int a,int b) // кűȽ +{ + if(ae=x->e;s->i=x->i;s->j=x->j; +} + +void AddNode(MTNode * &lp,MTNode * &lq,MTNode *s) // βӽ +{ + MTNode *p; + p=new MTNode; + NodeCopy(p,s); + p->next=NULL; + if(lp==NULL) // Ԫ + { + lp=p; + lq=p; + } + else // Ԫ + { + lq->next =p; + lq=p; + } +}// + + + LMatrix MatrixAdd(LMatrix ma,LMatrix mb) // +{ + LMatrix mc; + MTNode *pa,*pb,*pc; // ֱָ򱻼;Ԫ + MTNode *s;// + int i,sum; + int m,n; // + int flag=1; + m=ma.mu ; + n=ma.nu ; + mc.mu=m;mc.nu=n;mc.tu=0;mc.rops=NULL; + if(mc.rops) delete [] mc.rops; + mc.rops=new MTNode* [m]; + for(i=0;ijj) + { + s=new MTNode;// + NodeCopy(s,pa); + s->next=NULL; + pa=pa->next; + } + else if(pa->j==pb->j) + { + sum=pa->e+pb->e; + if(sum==0) flag=0; + else + { + s=new MTNode; + NodeCopy(s,pa); + s->e=sum; + s->next=NULL; + } + pa=pa->next;pb=pb->next;//pa,pb + } + else + { + s=new MTNode; + NodeCopy(s,pb); // pbָ + pb=pb->next; // pb + s->next=NULL; + } + if(flag) // ½ + { + mc.tu++; + AddNode(mc.rops[i],pc,s); + } + }//while + if(pa) // paգpaʣ; + { + while(pa) + { + s=new MTNode; + NodeCopy(s,pa);pa=pa->next; + AddNode(mc.rops [i],pc,s); + }//while + }//if(pa) + if(pb) // pbգpbʣ; + { + while(pb) + { + s=new MTNode; + NodeCopy(s,pb);pb=pb->next ; + AddNode(mc.rops [i],pc,s); + }//while + }//if(pb) + }//for + return mc; +}//MAdd + +void MDisp(LMatrix a) +{ + MTNode *p; + int i,j,c=0; + for(i=0;ij) + cout<<'\t'<e; + p=p->next; + } + }//for + cout<i=d[i][0]; + s->j=d[i][1]; + s->e=d[i][2]; + r2=s->i; // Ԫ + if(r2!=r1) // 1 + { + M.rops[r2]=s; + s->next=NULL; + p=s; + r1=r2; + } + else // Ԫ + { + s->next=p->next; + p->next =s; + p=s; + } + }//for + return M; +}//MCreate + + +void main() +{ + //MTNode *p; + LMatrix ma,mb,mc; + int m=4,n=6; // + int da[5][3]={{0,1,3},{1,1,2},{1,3,5},{3,0,9},{3,5,1}}; + int db[4][3]={{0,2,7},{1,1,6},{1,3,-5},{2,1,4}}; + ma=MCreate(da,4,6,5); // ma + cout<<"ma="<//cout,cin +using namespace std; + + +struct MNode //Ԫ +{ + int i,j; //кţк + int e; //Ԫ +}; + + +struct TSMatrix +{ + int mu,nu,tu; // Ԫ + MNode *data; // Ԫ +}; + +TSMatrix MCreate(int d[][3],int m,int n,int k) //ԪĶάϡ洢 +{ + TSMatrix M={m,n,k,NULL}; + if(k!=0) + M.data=new MNode[k]; + for(int i=0;i +void DestroyQueue(SqQueue
&Q) +{ + delete [] Q.base; // ͷŶпռ + Q.front=Q.rear=0; // ö + Q.queuesize=0; +} + + +//㷨3.16 +template +bool EnQueue(SqQueue
&Q,BTNode
* e) +{ + if((Q.rear+1)%Q.queuesize==Q.front) // + return false; // false + Q.base[Q.rear]=e; // + Q.rear=(Q.rear+1)% Q.queuesize; // ޸Ķ + return true; // true +} + +//㷨3.17 +template +bool DeQueue(SqQueue
&Q,BTNode
* &e) +{ + if(Q.front==Q.rear) // ӿ + return false; + e=Q.base[Q.front]; + Q.front=(Q.front+1)%Q.queuesize; + return true; // ɾɹtrue +} + + // ӿ +template +bool QueueEmpty(SqQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; // true + else // Ӳ + return false; // false +} \ No newline at end of file diff --git a/OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/SqStack.h b/OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/SqStack.h new file mode 100644 index 0000000..ede3f93 --- /dev/null +++ b/OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/SqStack.h @@ -0,0 +1,76 @@ +//ջ +template +struct SqStack // ˳ջ +{ + BTNode
* *base; // ջַ + int top; // ջָ + int stacksize; // ջ +}; + + +//㷨3.1 ʼջ +template +void InitStack(SqStack
&S, int m) +{ + S.base=new BTNode
* [m]; // ջռ + if(S.base==NULL) + { + cout<<"δɹ"; + exit (1); + } + S.top=-1; // ջ + S.stacksize=m; // ջΪm +} + + +//㷨3.2 ջ +template +void DestroyStack(SqStack
&S)// +{ + delete [] S.base; //ͷջռ + S.top=-1; + S.stacksize=0; +} + + +//㷨3.3 +template +bool Push(SqStack
&S,BTNode
* e) +{ + if(S.top==S.stacksize-1) // ջܲ + return false; + S.top++; + S.base[S.top]=e; + return true; // ɹtrue +} + +//㷨3.4 ջ +template +bool Pop(SqStack
&S,BTNode
* &e) +{ + if(S.top==-1) //ջ + return false; + e=S.base[S.top]; + S.top--; + return true; // ջɹtrue +} + +template // ȡջԪ +bool GetTop(SqStack
&S,BTNode
* &e) +{ + if(S.top==-1) // ջգfalse + return false; + e=S.base[S.top]; // ȡջԪ + return true; // true +} + + + // ջ +template +bool StackEmpty(SqStack
S) +{ + if(S.top==-1) // ջգtrue + return true; + else // ջǿգfalse + return false; +} \ No newline at end of file diff --git a/OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/bitree.cpp b/OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/bitree.cpp new file mode 100644 index 0000000..e715167 --- /dev/null +++ b/OrigFiles/5-树和二叉树/5-树和二叉树/5-BiTree(二叉树)/bitree.cpp @@ -0,0 +1,131 @@ + +#include//cout,cin +#include +using namespace std; +#include"bitree.h" +#include"SqQueue.h" +#include"SqStack.h" + //Բο +string fbt="a b d # # e # # c f # # g # #"; // һÿҶ# +string cbt="a b d # # e # # c # #"; // ȫÿҶ# +string gbt="a b # d # # c e # # #"; // һ +string obt="a b c d # # # # #"; // б1 + + +void dispmenu() +{ //ʾ˵ + cout< *bt; + + system("cls"); // + + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~120 ˳):"; + cin>>choice; + switch(choice) + { + case 1: // + cout<<"Բοݣ"< *p; + cout<<"ҪѯĽֵ"<>e; + p=Search(bt,e); + if(p) + { + cout<<"ҵ"; + cout<data< +struct BTNode +{ + DT data ; // + BTNode* lchild; //ָָ + BTNode* rchild; //ָָ +}; + + +//㷨5.1 ݹ㷨 +template +void PreOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + cout<data<<' '; //ϵ + PreOrDerBiTree(bt->lchild); //ݹĵǰ + PreOrDerBiTree(bt->rchild); //ݹĵǰ + } + return; +} + +//㷨5.2 ݹ㷨 +template +void InOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + InOrDerBiTree(bt->lchild); //ݹĵ + cout<data<<' '; //ϵ + InOrDerBiTree(bt->rchild); //ݹĵ + } + return; +} + +//㷨5.3 ݹ㷨 +template +void PostOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + PostOrDerBiTree(bt->lchild); //ݹĵú + PostOrDerBiTree(bt->rchild); //ݹĵú + cout<data<<' '; //ϵ + } + return; +} + + +//㷨5.4 㷨 +template +void LevelBiTree(BTNode
*bt) +{ + SqQueue
Q; // һ + int m=20; + InitQueue(Q,m); + BTNode
* p; + p=bt; + if(p) EnQueue(Q,p); // ǿգ + while (!QueueEmpty(Q)) // ӷǿ + { + DeQueue(Q,p); // + cout<data; // + if(p->lchild!=NULL) // + EnQueue(Q, p->lchild); // + if(p->rchild!=NULL) // Һ + EnQueue(Q, p->rchild); // Һ + } + DestroyQueue(Q); // ٶ +} + + +//㷨5.5 DZݹ㷨 +template +void PreOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // ջ + int m=20; + InitStack(S, m); + BTNode
* p; + p=bt; + while (p!=NULL || !StackEmpty(S)) // ǿջջǿ + { + while(p!=NULL) // ǿ + { + cout<data<<' '; // ʽ + Push(S,p); // ջ + p=p->lchild; // ת + } + if(!StackEmpty(S)) // ջǿ + { + Pop(S,p); // ջ + p=p->rchild; // תջ + } + } + DestroyStack(S); //ջ +} + + +//㷨5.6 DZݹ㷨 +template +void InOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // һջ + int m=20; + InitStack(S, m); + BTNode
* p; + p=bt; + while (p!=NULL || !StackEmpty(S)) // ǿջջǿ + { + while(p!=NULL) // ǿ + { + Push(S,p); // ջ + p=p->lchild; // תջ + } + if(!StackEmpty(S)) // ջǿ + { + Pop(S,p); // ջ + cout<data<<' '; // ʳջ + p=p->rchild; // תջ + } + } + DestroyStack(S); // ջ +} + + + +//㷨5.7 DZݹ㷨 +template +void PostOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // һջ + int m=20; + InitStack(S, m); + BTNode
* p; + BTNode
* r; + p=bt; + bool flag; + do + { + while(p) // ǿ + { + Push(S,p); // ջ + p=p->lchild; // ת + } + r=NULL; // ָձʵ㣬ֵΪ + flag=true; // trueʾջ + while(!StackEmpty(S) && flag) // ջǿҵǰջ + { + GetTop(S,p); // ȡջԪ + if(p->rchild==r) // ǰջԪصҺ + { + cout<data<<' '; // ջԪ + Pop(S,p); // ջ + r=p; // rָ򱻷ʽ + } + else // + { + p=p->rchild; // תջԪҺ + flag=false; // ջ + } + } + }while(!StackEmpty(S)); // ջǿգѭ + cout< +void CreateBiTree(BTNode
*&bt) +{ + char ch; + cin>>ch; // + if(ch=='#') // # ʾָΪգ˵Ϊ + bt=NULL ; + else + { + bt=new BTNode
; // ڴ + if(!bt) + { + cout<<"ڴʧܣ"<data=ch; + CreateBiTree(bt->lchild); // + CreateBiTree(bt->rchild); // + } + return; +} + + +//㷨5.9 ٶ +template +void DestroyBiTree(BTNode
*&bt) +{ + if(bt) // ǿ + { + DestroyBiTree(bt->lchild); // + DestroyBiTree(bt->rchild); // + delete bt; + } +} + + +//㷨5.10 + +template +BTNode
* Search(BTNode
* bt, DT e) // ֵΪeԪ +{ + BTNode
*p; + if(bt==NULL) // Ϊգ + return NULL; + else if(bt->data==e) // ҵؽָ + return bt; + else // ֵΪe + { + p=Search(bt->lchild,e); // ϲ + if(p!=NULL) // ҵ + return p; // ؽָ + else // δҵ + return Search(bt->rchild,e); // תϲ + } +} + +//㷨5.11 +template +int Depth(BTNode
*bt) +{ + int hl,hr; + if(bt==NULL) // + return 0; // Ϊ0 + else // ǿ + { + + hl=Depth(bt->lchild); // + hr=Depth(bt->lchild); // + if(hl>hr) // + return hl+1; // Ϊ߼1 + else return hr+1; // ,Ϊ߼1 + } +} + + +//㷨5.12 +template +int NodeCount(BTNode
*bt) +{ + if(bt==NULL) // Ϊ0 + return 0; + else // ǿΪĺͼ1 + return NodeCount(bt->lchild)+NodeCount(bt->rchild)+1; +} + +template +void DispBiTree(BTNode
* bt,int level) // ʾ +{ + if(bt) //նʾ + { DispBiTree(bt->rchild,level+1); //ʾ + cout<data; //ʾڵ + DispBiTree(bt->lchild,level+1); //ʾ + cout< +int leftCount(BTNode
*bt) +{ + if(bt->lchild==NULL & bt->rchild==NULL) // Ϊ0 + return 0; + else // ǿΪĺͼ1 + return NodeCount(bt->lchild)+NodeCount(bt->rchild)+1; +} \ No newline at end of file diff --git a/OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/InThrBiTree.h b/OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/InThrBiTree.h new file mode 100644 index 0000000..b3ab3df --- /dev/null +++ b/OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/InThrBiTree.h @@ -0,0 +1,128 @@ +template +struct ThrBTNode +{ + DT data; // + int lflag; // ־ + int rflag; // ұ־ + ThrBTNode *lchild; // ָ + ThrBTNode *rchild; // ָ +}; + + +template // +void CreateBiTree(ThrBTNode
*&bt) +{ // е˳,#Ϊָ־; + char ch; + cin>>ch; // + if(ch=='#') // # ʾָΪգ˵Ϊ + bt=NULL ; + else + { + bt=new ThrBTNode
; // ½ + if(!bt) + { + cout<<"ڴʧܣ"<lflag=0; // + bt->rflag=0; // + bt->data=ch; + CreateBiTree(bt->lchild); // ݹ鴴 + CreateBiTree(bt->rchild); // ݹ鴴 + } + return; +} + +ThrBTNode *pre; + +//㷨5.13 +template +void InThread(ThrBTNode
*&p) +{ + + if(p!=NULL) // ǿ + { + InThread(p->lchild); // + if(p->lchild==NULL) // + { + p->lflag=1; // ǰʶ + p->lchild=pre; // ָǰ + } + if(pre->rchild==NULL) // Һ + { + pre->rflag=1; // úʶ + pre->rchild=p; // Һָ + } + pre=p; // ǰָǰ + InThread(p->rchild); // + } +} + + +template // +ThrBTNode
* CreateInThread(ThrBTNode
*&bt) +{ + ThrBTNode
*root; + root=new ThrBTNode
; // ͷ + root->lflag=0; + root->rflag=1; + root->rchild=bt; + if(bt==NULL) + root->lchild=root; + else + { + root->lchild=bt; + pre=root; + InThread(bt); // + pre->rchild=root; // ѭ + pre->rflag=1; + root->rchild=pre; + } + return root; +} + +//㷨5.15 +template +void InThrBiTree( ThrBTNode
* bt) +{ + ThrBTNode
*p; + p=bt->lchild; // Ӹ㿪ʼ + while(p!=bt) // ǿ + { + while (p->lflag==0) // + p=p->lchild; // һ· + cout<data; // ʽ + while(p->rflag==1 && p->rchild!=bt) // кҷǿ + { + p=p->rchild; // ת + cout<data<<" "; // ʺ̽ + } + p=p->rchild; // ޺ת + } +} + +template // ʾ +void DispBiTree(ThrBTNode
* bt,int level) +{ + if(bt) // նʾ + { DispBiTree(bt->rchild,level+1); // ʾ + cout<data; // ʾڵ + DispBiTree(bt->lchild,level+1); // ʾ + cout< +void DestroyThrBiTree(ThrBTNode
*&bt) +{ + if(bt) + { + DestroyThrBiTree(bt->lchild); + DestroyThrBiTree(bt->rchild); + delete bt; + } +} \ No newline at end of file diff --git a/OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/ThrBiTree.cpp b/OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/ThrBiTree.cpp new file mode 100644 index 0000000..26bf2f3 --- /dev/null +++ b/OrigFiles/5-树和二叉树/5-树和二叉树/5-InThrBiTree(中序线索二叉树)/ThrBiTree.cpp @@ -0,0 +1,74 @@ +#include//cout,cin +#include +#include"InThrBiTree.h" +using namespace std; + + +void dispmenu() +{ // ʾ˵ + cout< *bt; + system("cls"); // + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~7):"; + cin>>choice; + switch(choice) + { + case 1: // + cout<<"ݲο"< +struct SqQueue // ˳ +{ + BTNode
* *base; // ַ + int front; // ͷָ + int rear; // βָ + int queuesize; // +}; + +//㷨3.14 ʼ +template +void InitQueue(SqQueue
&Q, int m) +{ + Q.base=new BTNode
*[m]; // пռ + if(Q.base==NULL) // ռʧ + { + cout<<"δɹ"; + exit (1); // ˳ + } + Q.front=Q.rear=0; // ö + Q.queuesize=m; +} + + +//㷨3.15 +template +void DestroyQueue(SqQueue
&Q) +{ + delete [] Q.base; // ͷŶпռ + Q.front=Q.rear=0; // ö + Q.queuesize=0; +} + + +//㷨3.16 +template +bool EnQueue(SqQueue
&Q,BTNode
* e) +{ + if((Q.rear+1)%Q.queuesize==Q.front) // + return false; // false + Q.base[Q.rear]=e; // + Q.rear=(Q.rear+1)% Q.queuesize; // ޸Ķ + return true; // true +} + +//㷨3.17 +template +bool DeQueue(SqQueue
&Q,BTNode
* &e) +{ + if(Q.front==Q.rear) // ӿ + return false; + e=Q.base[Q.front]; + Q.front=(Q.front+1)%Q.queuesize; + return true; // ɾɹtrue +} + + // ӿ +template +bool QueueEmpty(SqQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; // true + else // Ӳ + return false; // false +} \ No newline at end of file diff --git a/OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/SqStack.h b/OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/SqStack.h new file mode 100644 index 0000000..ede3f93 --- /dev/null +++ b/OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/SqStack.h @@ -0,0 +1,76 @@ +//ջ +template +struct SqStack // ˳ջ +{ + BTNode
* *base; // ջַ + int top; // ջָ + int stacksize; // ջ +}; + + +//㷨3.1 ʼջ +template +void InitStack(SqStack
&S, int m) +{ + S.base=new BTNode
* [m]; // ջռ + if(S.base==NULL) + { + cout<<"δɹ"; + exit (1); + } + S.top=-1; // ջ + S.stacksize=m; // ջΪm +} + + +//㷨3.2 ջ +template +void DestroyStack(SqStack
&S)// +{ + delete [] S.base; //ͷջռ + S.top=-1; + S.stacksize=0; +} + + +//㷨3.3 +template +bool Push(SqStack
&S,BTNode
* e) +{ + if(S.top==S.stacksize-1) // ջܲ + return false; + S.top++; + S.base[S.top]=e; + return true; // ɹtrue +} + +//㷨3.4 ջ +template +bool Pop(SqStack
&S,BTNode
* &e) +{ + if(S.top==-1) //ջ + return false; + e=S.base[S.top]; + S.top--; + return true; // ջɹtrue +} + +template // ȡջԪ +bool GetTop(SqStack
&S,BTNode
* &e) +{ + if(S.top==-1) // ջգfalse + return false; + e=S.base[S.top]; // ȡջԪ + return true; // true +} + + + // ջ +template +bool StackEmpty(SqStack
S) +{ + if(S.top==-1) // ջգtrue + return true; + else // ջǿգfalse + return false; +} \ No newline at end of file diff --git a/OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/bitree.cpp b/OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/bitree.cpp new file mode 100644 index 0000000..8343879 --- /dev/null +++ b/OrigFiles/5-树和二叉树/5-树和二叉树/BiTree/bitree.cpp @@ -0,0 +1,131 @@ + +#include//cout,cin +#include +using namespace std; +#include"bitree.h" +#include"SqQueue.h" +#include"SqStack.h" + //Բο +string fbt="a b d # # e # # c f # # g # #"; // һÿҶ# +string cbt="a b d # # e # # c # #"; // ȫÿҶ# +string gbt="a b # d # # c e # # #"; // һ +string obt="a b c d # # # # #"; // б1 + + +void dispmenu() +{ //ʾ˵ + cout< *bt; + + system("cls"); // + + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~13):"; + cin>>choice; + switch(choice) + { + case 1: // + cout<<"Բοݣ"< *p; + cout<<"ҪѯĽֵ"<>e; + p=Search(bt,e); + if(p) + { + cout<<"ҵ"; + cout<data< +struct BTNode +{ + DT data ; // + BTNode* lchild; //ָָ + BTNode* rchild; //ָָ +}; + + +//㷨5.1 ݹ㷨 +template +void PreOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + cout<data<<' '; //ϵ + PreOrDerBiTree(bt->lchild); //ݹĵǰ + PreOrDerBiTree(bt->rchild); //ݹĵǰ + } + return; +} + +//㷨5.2 ݹ㷨 +template +void InOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + InOrDerBiTree(bt->lchild); //ݹĵ + cout<data<<' '; //ϵ + InOrDerBiTree(bt->rchild); //ݹĵ + } + return; +} + +//㷨5.3 ݹ㷨 +template +void PostOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + PostOrDerBiTree(bt->lchild); //ݹĵú + PostOrDerBiTree(bt->rchild); //ݹĵú + cout<data<<' '; //ϵ + } + return; +} + + +//㷨5.4 㷨 +template +void LevelBiTree(BTNode
*bt) +{ + SqQueue
Q; // һ + int m=20; + InitQueue(Q,m); + BTNode
* p; + p=bt; + if(p) EnQueue(Q,p); // ǿգ + while (!QueueEmpty(Q)) // ӷǿ + { + DeQueue(Q,p); // + cout<data; // + if(p->lchild!=NULL) // + EnQueue(Q, p->lchild); // + if(p->rchild!=NULL) // Һ + EnQueue(Q, p->rchild); // Һ + } + DestroyQueue(Q); // ٶ +} + + +//㷨5.5 DZݹ㷨 +template +void PreOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // ջ + int m=20; + InitStack(S, m); + BTNode
* p; + p=bt; + while (p!=NULL || !StackEmpty(S)) // ǿջջǿ + { + while(p!=NULL) // ǿ + { + cout<data<<' '; // ʽ + Push(S,p); // ջ + p=p->lchild; // ת + } + if(!StackEmpty(S)) // ջǿ + { + Pop(S,p); // ջ + p=p->rchild; // תջ + } + } + DestroyStack(S); //ջ +} + + +//㷨5.6 DZݹ㷨 +template +void InOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // һջ + int m=20; + InitStack(S, m); + BTNode
* p; + p=bt; + while (p!=NULL || !StackEmpty(S)) // ǿջջǿ + { + while(p!=NULL) // ǿ + { + Push(S,p); // ջ + p=p->lchild; // תջ + } + if(!StackEmpty(S)) // ջǿ + { + Pop(S,p); // ջ + cout<data<<' '; // ʳջ + p=p->rchild; // תջ + } + } + DestroyStack(S); // ջ +} + + + +//㷨5.7 DZݹ㷨 +template +void PostOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // һջ + int m=20; + InitStack(S, m); + BTNode
* p; + BTNode
* r; + p=bt; + bool flag; + do + { + while(p) // ǿ + { + Push(S,p); // ջ + p=p->lchild; // ת + } + r=NULL; // ָձʵ㣬ֵΪ + flag=true; // trueʾջ + while(!StackEmpty(S) && flag) // ջǿҵǰջ + { + GetTop(S,p); // ȡջԪ + if(p->rchild==r) // ǰջԪصҺ + { + cout<data<<' '; // ջԪ + Pop(S,p); // ջ + r=p; // rָ򱻷ʽ + } + else // + { + p=p->rchild; // תջԪҺ + flag=false; // ջ + } + } + }while(!StackEmpty(S)); // ջǿգѭ + cout< +void CreateBiTree(BTNode
*&bt) +{ + char ch; + cin>>ch; // + if(ch=='#') // # ʾָΪգ˵Ϊ + bt=NULL ; + else + { + bt=new BTNode
; // ڴ + if(!bt) + { + cout<<"ڴʧܣ"<data=ch; + CreateBiTree(bt->lchild); // + CreateBiTree(bt->rchild); // + } + return; +} + + +//㷨5.9 ٶ +template +void DestroyBiTree(BTNode
*&bt) +{ + if(bt) // ǿ + { + DestroyBiTree(bt->lchild); // + DestroyBiTree(bt->rchild); // + delete bt; + } +} + + +//㷨5.10 + +template +BTNode
* Search(BTNode
* bt, DT e) // ֵΪeԪ +{ + BTNode
*p; + if(bt==NULL) // Ϊգ + return NULL; + else if(bt->data==e) // ҵؽָ + return bt; + else // ֵΪe + { + p=Search(bt->lchild,e); // ϲ + if(p!=NULL) // ҵ + return p; // ؽָ + else // δҵ + return Search(bt->rchild,e); // תϲ + } +} + +//㷨5.11 +template +int Depth(BTNode
*bt) +{ + int hl,hr; + if(bt==NULL) // + return 0; // Ϊ0 + else // ǿ + { + + hl=Depth(bt->lchild); // + hr=Depth(bt->lchild); // + if(hl>hr) // + return hl+1; // Ϊ߼1 + else return hr+1; // ,Ϊ߼1 + } +} + + +//㷨5.12 +template +int NodeCount(BTNode
*bt) +{ + if(bt==NULL) // Ϊ0 + return 0; + else // ǿΪĺͼ1 + return NodeCount(bt->lchild)+NodeCount(bt->rchild)+1; +} + +template +void DispBiTree(BTNode
* bt,int level) // ʾ +{ + if(bt) //նʾ + { DispBiTree(bt->rchild,level+1); //ʾ + cout<data; //ʾڵ + DispBiTree(bt->lchild,level+1); //ʾ + cout< +#include +using namespace std; + +struct HTNode +{ + int weight; // ȨֵΪ + int parent; // ˫λ + int lchild; // λ + int rchild; // Һλ +}; + + +void select(HTNode *HT,int k,int &i1,int &i2) // ǰK-1ѡȨֵСij +{ + int m1,m2; + m1=m2=32767; // + i1=i2=0; + for(int j=0;jweight<parent + <lchild<rchild<>op; + switch(op) + { + case 1: + cout<<"԰"<>n; + w=new int[n]; + cout<<"Ȩֵ"<>w[i]; + } + break; + case 2: + HT=new HTNode[2*n-1]; // Ŷ洢ռ + HuffmanTree(HT,w,n); + cout<<"ĹΪ\n"; + DispHT(HT,n); + system("pause"); + break; + case 3: + HC=new char*[n]; // 洢ʾ + cout<<"Ϊ\n"; + CreateHFCode(HT, n, HC); + break; + case 4: + cout<<"УBye-Bye!"<//cout,cin +#include +using namespace std; + +template +struct ThrBTNode +{ + DT data; // + int lflag; // ־ + int rflag; // ұ־ + ThrBTNode *lchild; // ָ + ThrBTNode *rchild; // ָ +}; + + +template // +void CreateBiTree(ThrBTNode
*&bt) +{ // е˳,#Ϊָ־; + char ch; + cin>>ch; // + if(ch=='#') // # ʾָΪգ˵Ϊ + bt=NULL ; + else + { + bt=new ThrBTNode
; // ½ + if(!bt) + { + cout<<"ڴʧܣ"<lflag=0; // + bt->rflag=0; // + bt->data=ch; + CreateBiTree(bt->lchild); // ݹ鴴 + CreateBiTree(bt->rchild); // ݹ鴴 + } + return; +} + +ThrBTNode *pre; + +//㷨5.13 +template +void InThread(ThrBTNode
*&p) +{ + + if(p!=NULL) // ǿ + { + InThread(p->lchild); // + if(p->lchild==NULL) // + { + p->lflag=1; // ǰʶ + p->lchild=pre; // ָǰ + } + if(pre->rchild==NULL) // Һ + { + pre->rflag=1; // úʶ + pre->rchild=p; // Һָ + } + pre=p; // ǰָǰ + InThread(p->rchild); // + } +} + + +template // +ThrBTNode
* CreateInThread(ThrBTNode
*&bt) +{ + ThrBTNode
*root; + root=new ThrBTNode
; // ͷ + root->lflag=0; + root->rflag=1; + root->rchild=bt; + if(bt==NULL) + root->lchild=root; + else + { + root->lchild=bt; + pre=root; + InThread(bt); // + pre->rchild=root; // ѭ + pre->rflag=1; + root->rchild=pre; + } + return root; +} + + + + +//㷨5.15 +template +void InThrBiTree( ThrBTNode
* bt) +{ + ThrBTNode
*p; + p=bt->lchild; // Ӹ㿪ʼ + while(p!=bt) // ǿ + { + while (p->lflag==0) // + p=p->lchild; // һ· + cout<data; // ʽ + while(p->rflag==1 && p->rchild!=bt) // кҷǿ + { + p=p->rchild; // ת + cout<data<<" "; // ʺ̽ + } + p=p->rchild; // ޺ת + } +} + +template // ʾ +void DispBiTree(ThrBTNode
* bt,int level) +{ + if(bt) // նʾ + { DispBiTree(bt->rchild,level+1); // ʾ + cout<data; // ʾڵ + DispBiTree(bt->lchild,level+1); // ʾ + cout< +void DestroyThrBiTree(ThrBTNode
*&bt) +{ + if(bt) + { + DestroyThrBiTree(bt->lchild); + DestroyThrBiTree(bt->rchild); + delete bt; + } +} + +void dispmenu() +{ // ʾ˵ + cout< *bt; + + + system("cls"); // + + int choice; + do + { + dispmenu(); //ʾ˵ + cout<<"Enter choice(1~7):"; + cin>>choice; + switch(choice) + { + case 1: // + cout<<"ݲο"< +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "Mgraph.h" +#include +using namespace std; + +// ͼ + +void DispMenu() +{ + cout<<"\n ѡҪIJ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDG(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺ͼΪ"<>v; + InsertVex(G,v); + cout<<"붥ӦߺͼΪ"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ"<>u>>v; + if(InsertArc(G,u,v)) + cout<<"ߺͼΪ"<>u>>v; + DeleteArc(G,u,v); + cout<<"ߺͼΪ"< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͱ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateUDG(MGraph
&G) +{ + int i,j,k; + DT v1,v2; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 ߵڽӵ + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==0 ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ"<>w; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w); + else + cout<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w) // ֵΪvwӱ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + { + cout<<"\n㲻ڻͬܲ룡"< +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ߲ڣfalse + { + cout<<"߲ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "Mgraph.h" +#include +using namespace std; + +// + +void DispMenu() +{ + cout<<"\n ѡҪIJ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // + CreateUDN(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺"<>v; + InsertVex(G,v); + cout<<"붥Ӧߺ"<>v; + DeleteVex(G,v); + cout<<"ɾ"<>u>>v>>weight; + if(InsertArc(G,u,v,weight)) // ɹʾ + cout<<"ߺ"<>u>>v; + DeleteArc(G,u,v); + cout<<"ߺ"< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // ϢȨֵΪ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͱ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateUDN(MGraph
&G) +{ + int i,j,k,weight; + DT v1,v2; + cout<<"Ķ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ı "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 ߵڽӵͱȨֵ + cin>>weight; + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) // ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==INF ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j,weight; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵͱߵȨֵ"<>w>>weight; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w,weight); + else + cout<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w,int weight) // ֵΪvwӱ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + { + cout<<"\n㲻ڣͬܲ룡"< +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ߲ڣfalse + { + cout<<"߲ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // v + cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "Mgraph.h" +#include +using namespace std; + +// ͼ + +void DispMenu() +{ + cout<<"\n ѡҪIJ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateDG(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺ͼΪ"<>v; + InsertVex(G,v); + cout<<"붥ӦĻͼ"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ"<>u>>v; + if(InsertArc(G,u,v)) + cout<<"뻡ͼ"<>u>>v; + DeleteArc(G,u,v); + cout<<"ɾͼ"< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͻ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateDG(MGraph
&G) +{ + int i,j,k; + DT v1,v2; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼĻ "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 뻡ڽӵͻȨֵ + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==0 ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"뻡βͷ"<>v>>w; + InsertArc(G,v,w); + cout<<"Y/N)?"<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w) // ֵΪvwӻ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + { + cout<<"\n㲻ڻ򲻺ܲ룡"< +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ڣfalse + { + cout<<"ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "Mgraph.h" +#include +using namespace std; + +// + +void DispMenu() +{ + cout<<"\n ѡҪIJ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // + CreateDN(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺Ϊ"<>v; + InsertVex(G,v); + cout<<"붥ӦߺΪ"<>v; + DeleteVex(G,v); + cout<<"ɾΪ"<>u>>v>>weight; + if(InsertArc(G,u,v,weight)) + cout<<"ߺΪ"<>u>>v; + DeleteArc(G,u,v); + cout<<"ߺΪ"< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͻ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateDN(MGraph
&G) +{ + int i,j,k,weight; + DT v1,v2; + cout<<"Ķ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"Ļ "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 뻡ڽӵͻȨֵ + cin>>weight; + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==INF ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j,weight; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"½ĻβͷȨֵ"<>v>>w>>weight; + InsertArc(G,v,w,weight); + cout<<"Y/N)?"<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w,int weight) // ֵΪvwӻ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + { + cout<<"\n㲻ڻ򲻺ܲ룡"< +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ڣfalse + { + cout<<"ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +#include "LinkQueue.h" +#include "ALGraph.h" +#include +using namespace std; + +void DispMenu() +{ + cout<<"\n ѡ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDG(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޸ĺͼ"<>v; + InsertVex(G,v); + cout<<"붥Ӧߺͼ:"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ:"<>u>>v; + InsertArc(G,u,v); + cout<<"ߺͼ:"<>u>>v; + DeleteArc(G,u,v); + cout<<"ɾͼ:"< +struct VNode{ + DT data; // Ϣ + ArcNode *firstarc; // ָһöָ +}; + +template +struct ALGraph{ + VNode
vertices[MAX_VEXNUM]; // 㼯 + int vexnum; // + int arcnum; // +}; + +template +void DispG(ALGraph
G) +{ + int i; + ArcNode *p; + cout<adjvex) // ʱһ߱ + { + cout<<"("<adjvex].data<<")"<<'\t'; + } + p = p->nextarc; + } + } + cout< +int LocateVex(ALGraph
G, DT v) +{ + for(int i=0;i +void CreateUDG(ALGraph
&G) +{ + int i,j,k; + DT v1,v2; + ArcNode *p; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vertices[i].data; + G.vertices[i].firstarc = NULL; + } + for(k=0;k>v1>>v2; + i = LocateVex(G,v1); + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"<adjvex = j; + p->nextarc = G.vertices[i].firstarc; // v1ͷ±߽ + G.vertices[i].firstarc = p; + p = new ArcNode; // һµı + p->adjvex = i; + p->nextarc = G.vertices[j].firstarc; // v2ͷ±߽ + G.vertices[j].firstarc = p; + } +} + + +template +void DestroyGraph(ALGraph
G) // ٱ߽ +{ + int i; + ArcNode *p,*q; + for(i = 0;inextarc; + delete p; // ɾ߽ + p = q; + } + } + G.arcnum = 0; + G.vexnum = 0; +} + +template +bool GetVex(ALGraph
G, int k,DT &v) // ȡ k ֵ +{ + if(k<0||k>=G.vexnum) // 㲻ڣfalse + return false; + v=G.vertices[k].data; // ڣȡ k ֵ + return true; // true +} + +template +bool PutVex(ALGraph
&G, DT &u,DT v) // ޸Ķ u ֵ +{ + int k = LocateVex(G,u); + if(k<0) // u + return false; + G.vertices[k].data = v; // öuֵ + return true; +} + +template +int FirstAdjVex(ALGraph
G, int u) // 󶥵 u ĵһڽӵ +{ + ArcNode * p; + if(u<0 || u>=G.vexnum) // u + return -1; + p = G.vertices[u].firstarc; // uڣڽӵ㣬p Ϊһڽӵλ + if(p) + { + return p->adjvex; + } + else + { + return -1; + } +} + +template +int NextAdjVex(ALGraph
G, int u,int w) // 󶥵 u w һڽӵ +{ + ArcNode *p; + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum ) // + return -1; + p = G.vertices[u].firstarc; // u ı + while( p && (p->adjvex!=w)) // w ߽ + { + p = p->nextarc; + } + if(!p||!p->nextarc) // ûҵ w w һ + return -1; + else // 򣬷һڽӵλ + { + return p->nextarc->adjvex; + } +} + +template +bool InsertVex(ALGraph
&G, DT v) // Ӷ +{ + char ans; + DT w; + int j; + if(G.vexnum > MAX_VEXNUM) // Ϊඥ¶ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ:"<>w; + j=LocateVex(G,w); + if(j<0) + cout<<"㲻ڣܴߣ"<>ans; + } + return true; +} + + +template +bool InsertArc(ALGraph
&G, DT v,DT w) // ӱ(v,w) +{ + ArcNode *p; + int i,j; + i = LocateVex(G,v); + j = LocateVex(G,w); + if(i<0||j<0 || i==j) // 㲻ڻ˵ͬ,ܲ + { + cout<<"\n㲻ڻͬܲ룡"<adjvex==j) + { + cout<<"ߴڣܲ룡"<nextarc; + } + G.arcnum++; // 1 + p = new ArcNode; + p->adjvex = j; + p->nextarc = G.vertices[i].firstarc; // (v,w)߽ڵiͷ + G.vertices[i].firstarc = p; + p = new ArcNode; + p->adjvex = i; // (w,v)߽ڵjͷ + p->nextarc = G.vertices[j].firstarc; + G.vertices[j].firstarc = p; + return true; +} + +template +bool DeleteArc(ALGraph
&G, DT v,DT w) // ɾ(v,w) +{ + ArcNode *p,*q; + int i,j; + cout<<"Hello DeleteArc!"<adjvex!=j) // p p ָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p&&p->adjvex ==j) // ҵ(v,w) + { + if(p == G.vertices[i].firstarc) // 1 ߽ + { + G.vertices[i].firstarc = p->nextarc; + } + else // ǵ 1 ߽ + { + q->nextarc = p->nextarc; + } + delete p; + G.arcnum--; + p = G.vertices[j].firstarc; + while(p&&p->adjvex!=i) // pqָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p == G.vertices[j].firstarc) // 1 ߽ + { + G.vertices[j].firstarc = p->nextarc; + } + else // ǵ1߽ + { + q->nextarc = p->nextarc; + } + delete p; + } + cout<<"Bye-bye DeleteArc!"< +bool DeleteVex(ALGraph
&G, DT v) // ɾv +{ + int i,j; + ArcNode *p; + DT w; + i = LocateVex(G,v); + if(i<0) + { + cout<<"㲻ڣ"<adjvex; + GetVex(G,j,w); + DeleteArc(G,v,w); + p=G.vertices[i].firstarc; + } + for(j=i+1;j +void DFS(ALGraph
G, int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ʶѷ + cout<=0;w=NextAdjVex(G,v,w)) // vڽӵw + { + if(!visited[w]) // δʣDFS + DFS(G,w); + } +} + +// 㷨6.9 +template +void DFSTraverse(ALGraph
G) // ڽӱ洢ͼȱ +{ + int i ; + for(i = 0;i +void BFS(ALGraph
G, int v) // ͨͼĹȱ +{ + int w; + ArcNode *p; + LinkQueue Q; + InitQueue(Q); + cout<adjvex; + if(!visited[w]) + { + cout<nextarc; + } + } +} + + +template +bool BFSTraverse(ALGraph
G) // ڽӱ洢ͼĹȱ +{ + int i; + for(i = 0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "ALGraph.h" +#include +using namespace std; + +void DispMenu() +{ + cout<<"\n ѡ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDN(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޸ĺͼ"<>v; + InsertVex(G,v); + cout<<"붥Ӧߺͼ"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ:"<>u>>v>>weight; + InsertArc(G,u,v,weight); + cout<<"ߺͼΪ"<>u>>v; + DeleteArc(G,u,v); + cout<<"ߺͼΪ"< +struct VNode{ + DT data; // Ϣ + ArcNode *firstarc; // ָһöָ +}; + +template +struct ALGraph{ + VNode
vertices[MAX_VEXNUM]; // 㼯 + int vexnum; // + int arcnum; // +}; + +template +void DispG(ALGraph
G) +{ + int i; + ArcNode *p; + cout<adjvex) // ʱһ߱ + { + cout<<"("<adjvex].data<<","<weight<<")"<<'\t'; + } + p = p->nextarc; + } + } + cout< +int LocateVex(ALGraph
G, DT v) +{ + for(int i=0;i +void CreateUDN(ALGraph
&G) +{ + int i,j,k,weight; + DT v1,v2; + ArcNode *p; + cout<<"Ķ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ı "; + cin>>G.arcnum ; + cout<<""<>G.vertices[i].data; + G.vertices[i].firstarc = NULL; + } + for(k=0;k>v1>>v2>>weight; + i = LocateVex(G,v1); + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"<adjvex = j; + p->weight=weight; + p->nextarc = G.vertices[i].firstarc; // v1ͷ±߽ + G.vertices[i].firstarc = p; + p = new ArcNode; // һµı + p->adjvex = i; + p->weight=weight; + p->nextarc = G.vertices[j].firstarc; // v2ͷ±߽ + G.vertices[j].firstarc = p; + } +} + + +template +void DestroyGraph(ALGraph
G) // ٱ߽ +{ + int i; + ArcNode *p,*q; + for(i = 0;inextarc; + delete p; // ɾ߽ + p = q; + } + } + G.arcnum = 0; + G.vexnum = 0; +} + +template +bool GetVex(ALGraph
G, int k,DT &v) // ȡ k ֵ +{ + if(k<0||k>=G.vexnum) // 㲻ڣfalse + return false; + v=G.vertices[k].data; // ڣȡ k ֵ + return true; // true +} + +template +bool PutVex(ALGraph
&G, DT &u,DT v) // ޸Ķ u ֵ +{ + int k = LocateVex(G,u); + if(k<0) // u + return false; + G.vertices[k].data = v; // öuֵ + return true; +} + +template +int FirstAdjVex(ALGraph
G, int u) // 󶥵 u ĵһڽӵ +{ + ArcNode * p; + if(u<0 || u>=G.vexnum) // u + return -1; + p = G.vertices[u].firstarc; // uڣڽӵ㣬p Ϊһڽӵλ + if(p) + { + return p->adjvex; + } + else + { + return -1; + } +} + +template +int NextAdjVex(ALGraph
G, int u,int w) // 󶥵 u w һڽӵ +{ + ArcNode *p; + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum ) // + return -1; + p = G.vertices[u].firstarc; // u ı + while( p && (p->adjvex!=w)) // w ߽ + { + p = p->nextarc; + } + if(!p||!p->nextarc) // ûҵ w w һ + return -1; + else // 򣬷һڽӵλ + { + return p->nextarc->adjvex; + } +} + +template +bool InsertVex(ALGraph
&G, DT v) // Ӷ +{ + int j,weight; + char ans; + DT w; + if(G.vexnum > MAX_VEXNUM) // Ϊඥ¶ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵͱȨֵ:"<>w>>weight; + j=LocateVex(G,w); + if(j<0) + cout<<"㲻ڣܴߣ"<>ans; + }; + return true; +} + + +template +bool InsertArc(ALGraph
&G, DT v,DT w,int weight) // ӱ(v,w) +{ + ArcNode *p; + int i,j; + i = LocateVex(G,v); + j = LocateVex(G,w); + if(i<0||j<0 || i==j) // 㲻ڻ˵ͬ,ܲ + { + cout<<"\n㲻ڻͬܲ룡"<adjvex==j) + { + cout<<"ߴڣܲ룡"<nextarc; + } + G.arcnum++; // 1 + p = new ArcNode; + p->adjvex = j; + p->weight=weight; + p->nextarc = G.vertices[i].firstarc; // (v,w)߽ڵiͷ + G.vertices[i].firstarc = p; + p = new ArcNode; + p->adjvex = i; // (w,v)߽ڵjͷ + p->weight=weight; + p->nextarc = G.vertices[j].firstarc; + G.vertices[j].firstarc = p; + return true; +} + +template +bool DeleteArc(ALGraph
&G, DT v,DT w) // ɾ(v,w) +{ + ArcNode *p,*q; + int i,j; + cout<<"Hello DeleteArc!"<adjvex!=j) // p p ָIJǴɾ߽ + { + q = p; + p = p->nextarc; + } + if(p&&p->adjvex ==j) // ҵ(v,w) + { + if(p == G.vertices[i].firstarc) // 1 ߽ + { + G.vertices[i].firstarc = p->nextarc; + } + else // ǵ 1 ߽ + { + q->nextarc = p->nextarc; + } + delete p; + G.arcnum--; + p = G.vertices[j].firstarc; + while(p&&p->adjvex!=i) // pqָIJǴɾ߽ + { + q = p; + p = p->nextarc; + } + if(p == G.vertices[j].firstarc) // 1 ߽ + { + G.vertices[j].firstarc = p->nextarc; + } + else // ǵ1߽ + { + q->nextarc = p->nextarc; + } + delete p; + } + cout<<"Bye-bye DeleteArc!"< +bool DeleteVex(ALGraph
&G, DT v) // ɾv +{ + int i,j; + ArcNode *p; + DT w; + i = LocateVex(G,v); + if(i<0) + { + cout<<"㲻ڣ"<adjvex; + GetVex(G,j,w); + DeleteArc(G,v,w); + p=G.vertices[i].firstarc; + } + for(j=i+1;j +void DFS(ALGraph
G, int v) // ͨȱ +{ + int w; + visited[v] = true; // ʶѷ + cout<=0;w=NextAdjVex(G,v,w)) // vڽӵw + { + if(!visited[w]) // δʣDFS + DFS(G,w); + } +} + +// 㷨6.9 +template +void DFSTraverse(ALGraph
G) // ڽӱ洢ȱ +{ + int i ; + for(i = 0;i +void BFS(ALGraph
G, int v) // ͨĹȱ +{ + int w; + ArcNode *p; + LinkQueue Q; + InitQueue(Q); + cout<adjvex; + if(!visited[w]) + { + cout<nextarc; + } + } +} + + +template +bool BFSTraverse(ALGraph
G) // ڽӱ洢Ĺȱ +{ + int i; + for(i = 0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "ALGraph.h" +#include +using namespace std; + + + +void DispMenu() +{ + cout<<"\n ѡ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateDN(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺ͼΪ"<>v; + InsertVex(G,v); + cout<<"붥ӦͼΪ"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ:"<>u>>v; + InsertArc(G,u,v); + cout<<"뻡ͼΪ"<>u>>v; + DeleteArc(G,u,v); + cout<<"㻡ͼΪ"< +struct VNode{ + DT data; // Ϣ + ArcNode *firstarc; // ָһöָ +}; + +template +struct ALGraph{ + VNode
vertices[MAX_VEXNUM]; // 㼯 + int vexnum; // + int arcnum; // +}; + +template +void DispG(ALGraph
G) +{ + int i; + ArcNode *p; + cout<adjvex].data<<")"<<'\t'; + p = p->nextarc; + } + } + cout< +int LocateVex(ALGraph
G, DT v) +{ + for(int i=0;i +void CreateDN(ALGraph
&G) +{ + int i,j,k; + DT v1,v2; + ArcNode *p; + cout<<"Ķ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"Ļ "; + cin>>G.arcnum ; + cout<<""<>G.vertices[i].data; + G.vertices[i].firstarc = NULL; + } + for(k=0;k>v1>>v2; + i = LocateVex(G,v1); + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"<adjvex = j; + p->nextarc = G.vertices[i].firstarc; // v1ͷ» + G.vertices[i].firstarc = p; + } +} + + +template +void DestroyGraph(ALGraph
G) // ٻ +{ + int i; + ArcNode *p,*q; + for(i = 0;inextarc; + delete p; // ɾ + p = q; + } + } + G.arcnum = 0; + G.vexnum = 0; +} + +template +bool GetVex(ALGraph
G, int k,DT &v) // ȡ k ֵ +{ + if(k<0||k>=G.vexnum) // 㲻ڣfalse + return false; + v=G.vertices[k].data; // ڣȡ k ֵ + return true; // true +} + +template +bool PutVex(ALGraph
&G, DT &u,DT v) // ޸Ķ u ֵ +{ + int k = LocateVex(G,u); + if(k<0) // u + return false; + G.vertices[k].data = v; // öuֵ + return true; +} + +template +int FirstAdjVex(ALGraph
G, int u) // 󶥵 u ĵһڽӵ +{ + ArcNode * p; + if(u<0 || u>=G.vexnum) // u + return -1; + p = G.vertices[u].firstarc; // uڣڽӵ㣬p Ϊһڽӵλ + if(p) + { + return p->adjvex; + } + else + { + return -1; + } +} + +template +int NextAdjVex(ALGraph
G, int u,int w) // 󶥵 u w һڽӵ +{ + ArcNode *p; + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum ) // + return -1; + p = G.vertices[u].firstarc; // u Ļ + while( p && (p->adjvex!=w)) // w + { + p = p->nextarc; + } + if(!p||!p->nextarc) // ûҵ w w һ + return -1; + else // 򣬷һڽӵλ + { + return p->nextarc->adjvex; + } +} + +template +bool InsertVex(ALGraph
&G, DT v) // Ӷ +{ + int j; + char ans; + DT w; + if(G.vexnum > MAX_VEXNUM) // Ϊඥ¶ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"뻡:"<>v>>w; + InsertArc(G,v,w); + cout<<"Y/N)?"<>ans; + }; + return true; +} + + +template +bool InsertArc(ALGraph
&G, DT v,DT w) // ӻ(v,w) +{ + ArcNode *p; + int i,j; + i = LocateVex(G,v); + j = LocateVex(G,w); + if(i<0||j<0 || i==j) // 㲻ڻ˵ͬ,ܲ + { + cout<<"\n㲻ڻͬܲ룡"<adjvex==j) + { + cout<<"ڣܲ룡"<nextarc; + } + G.arcnum++; // 1 + p = new ArcNode; + p->adjvex = j; + p->nextarc = G.vertices[i].firstarc; // (v,w)ڵiͷ + G.vertices[i].firstarc = p; + return true; +} + +template +bool DeleteArc(ALGraph
&G, DT v,DT w) // ɾ(v,w) +{ + ArcNode *p,*q; + int i,j; + cout<<"Hello DeleteArc!"<adjvex!=j) // p p ָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p&&p->adjvex ==j) // ҵ(v,w) + { + if(p == G.vertices[i].firstarc) // 1 + { + G.vertices[i].firstarc = p->nextarc; + } + else // ǵ 1 + { + q->nextarc = p->nextarc; + } + delete p; + G.arcnum--; + } +//cout<<"Bye-bye DeleteArc!"< +bool DeleteVex(ALGraph
&G, DT v) // ɾv +{ + int i,j; + ArcNode *p; + DT w; + i = LocateVex(G,v); + if(i<0) + { + cout<<"㲻ڣ"<adjvex; + GetVex(G,j,w); + DeleteArc(G,v,w); + p=G.vertices[i].firstarc; + } + for(j=i+1;j +void DFS(ALGraph
G, int v) // ͨȱ +{ + int w; + visited[v] = true; // ʶѷ + cout<=0;w=NextAdjVex(G,v,w)) // vڽӵw + { + if(!visited[w]) // δʣDFS + DFS(G,w); + } +} + +// 㷨6.9 +template +void DFSTraverse(ALGraph
G) // ڽӱ洢ȱ +{ + int i ; + for(i = 0;i +void BFS(ALGraph
G, int v) // ͨĹȱ +{ + int w; + ArcNode *p; + LinkQueue Q; + InitQueue(Q); + cout<adjvex; + if(!visited[w]) + { + cout<nextarc; + } + } +} + + +template +bool BFSTraverse(ALGraph
G) // ڽӱ洢Ĺȱ +{ + int i; + for(i = 0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "ALGraph.h" +#include +using namespace std; + +void DispMenu() +{ + cout<<"\n ѡ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDN(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺ͼΪ"<>v; + InsertVex(G,v); + cout<<"붥ӦͼΪ"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ:"<>u>>v>>weight; + InsertArc(G,u,v,weight); + cout<<"뻡ͼΪ"<>u>>v; + DeleteArc(G,u,v); + cout<<"㻡ͼΪ"< +struct VNode{ + DT data; // Ϣ + ArcNode *firstarc; // ָһöָ +}; + +template +struct ALGraph{ + VNode
vertices[MAX_VEXNUM]; // 㼯 + int vexnum; // + int arcnum; // +}; + +template +void DispG(ALGraph
G) +{ + int i; + ArcNode *p; + cout<adjvex].data<<","<weight<<")"<<'\t'; + p = p->nextarc; + } + } + cout< +int LocateVex(ALGraph
G, DT v) +{ + for(int i=0;i +void CreateUDN(ALGraph
&G) +{ + int i,j,k,weight; + DT v1,v2; + ArcNode *p; + cout<<"Ķ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"Ļ "; + cin>>G.arcnum ; + cout<<""<>G.vertices[i].data; + G.vertices[i].firstarc = NULL; + } + for(k=0;k>v1>>v2>>weight; + i = LocateVex(G,v1); + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"<adjvex = j; + p->weight=weight; + p->nextarc = G.vertices[i].firstarc; // v1ͷ» + G.vertices[i].firstarc = p; + } +} + + +template +void DestroyGraph(ALGraph
G) // ٻ +{ + int i; + ArcNode *p,*q; + for(i = 0;inextarc; + delete p; // ɾ + p = q; + } + } + G.arcnum = 0; + G.vexnum = 0; +} + +template +bool GetVex(ALGraph
G, int k,DT &v) // ȡ k ֵ +{ + if(k<0||k>=G.vexnum) // 㲻ڣfalse + return false; + v=G.vertices[k].data; // ڣȡ k ֵ + return true; // true +} + +template +bool PutVex(ALGraph
&G, DT &u,DT v) // ޸Ķ u ֵ +{ + int k = LocateVex(G,u); + if(k<0) // u + return false; + G.vertices[k].data = v; // öuֵ + return true; +} + +template +int FirstAdjVex(ALGraph
G, int u) // 󶥵 u ĵһڽӵ +{ + ArcNode * p; + if(u<0 || u>=G.vexnum) // u + return -1; + p = G.vertices[u].firstarc; // uڣڽӵ㣬p Ϊһڽӵλ + if(p) + { + return p->adjvex; + } + else + { + return -1; + } +} + +template +int NextAdjVex(ALGraph
G, int u,int w) // 󶥵 u w һڽӵ +{ + ArcNode *p; + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum ) // + return -1; + p = G.vertices[u].firstarc; // u Ļ + while( p && (p->adjvex!=w)) // w + { + p = p->nextarc; + } + if(!p||!p->nextarc) // ûҵ w w һ + return -1; + else // 򣬷һڽӵλ + { + return p->nextarc->adjvex; + } +} + +template +bool InsertVex(ALGraph
&G, DT v) // Ӷ +{ + int j,weight; + char ans; + DT w; + if(G.vexnum > MAX_VEXNUM) // Ϊඥ¶ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"뻡Ȩֵ:"<>v>>w>>weight; + InsertArc(G,v,w,weight); + cout<<"Y/N)?"<>ans; + }; + return true; +} + + +template +bool InsertArc(ALGraph
&G, DT v,DT w,int weight) // ӻ(v,w) +{ + ArcNode *p; + int i,j; + i = LocateVex(G,v); + j = LocateVex(G,w); + if(i<0||j<0 || i==j) // 㲻ڻ˵ͬ,ܲ + { + cout<<"\n㲻ڻͬܲ룡"<adjvex==j) + { + cout<<"ڣܲ룡"<nextarc; + } + G.arcnum++; // 1 + p = new ArcNode; + p->adjvex = j; + p->weight=weight; + p->nextarc = G.vertices[i].firstarc; // (v,w)ڵiͷ + G.vertices[i].firstarc = p; + return true; +} + +template +bool DeleteArc(ALGraph
&G, DT v,DT w) // ɾ(v,w) +{ + ArcNode *p,*q; + int i,j; + cout<<"Hello DeleteArc!"<adjvex!=j) // p p ָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p&&p->adjvex ==j) // ҵ(v,w) + { + if(p == G.vertices[i].firstarc) // 1 + { + G.vertices[i].firstarc = p->nextarc; + } + else // ǵ 1 + { + q->nextarc = p->nextarc; + } + delete p; + G.arcnum--; + } +//cout<<"Bye-bye DeleteArc!"< +bool DeleteVex(ALGraph
&G, DT v) // ɾv +{ + int i,j; + ArcNode *p; + DT w; + i = LocateVex(G,v); + if(i<0) + { + cout<<"㲻ڣ"<adjvex; + GetVex(G,j,w); + DeleteArc(G,v,w); + p=G.vertices[i].firstarc; + } + for(j=i+1;j +void DFS(ALGraph
G, int v) // ͨȱ +{ + int w; + visited[v] = true; // ʶѷ + cout<=0;w=NextAdjVex(G,v,w)) // vڽӵw + { + if(!visited[w]) // δʣDFS + DFS(G,w); + } +} + +// 㷨6.9 +template +void DFSTraverse(ALGraph
G) // ڽӱ洢ȱ +{ + int i ; + for(i = 0;i +void BFS(ALGraph
G, int v) // ͨĹȱ +{ + int w; + ArcNode *p; + LinkQueue Q; + InitQueue(Q); + cout<adjvex; + if(!visited[w]) + { + cout<nextarc; + } + } +} + + +template +bool BFSTraverse(ALGraph
G) // ڽӱ洢Ĺȱ +{ + int i; + for(i = 0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< + +#include + +#include "MGraph.h" +#include "LinkQueue.h" +using namespace std; + +void DispMenu() +{ + cout<<"\nѡҪIJ"< +bool IsConected(MGraph
G, int i, int j) +{ + int k; + for(k=0;k +bool IsGraphConected(MGraph
G) +{ + int i,flag=1; + for(i=0;i G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDG(G); + cout<>u>>v; + i=LocateVex(G,u); + j=LocateVex(G,v); + if(i==-1 ||j==-1 || i==j) // 㲻 + cout<<"\n㲻ڻͬ "< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͱ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateUDG(MGraph
&G) +{ + int i,j,k; + DT v1,v2; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 ߵڽӵ + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==0 ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ"<>w; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w); + else + cout<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w) // ֵΪvwӱ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + return false; // ܲߣfalse + G.arcs[i][j]=1; + G.arcs[j][i]=1; + G.arcnum++; + return true; +} + +template +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ߲ڣfalse + { + cout<<"߲ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + //cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +#include +#include "ALGraph.h" +#include "LinkQueue.h" +using namespace std; + +void DispMenu()ͼͨϢ +{ + cout<<"\nѡҪIJ"< +void DFS3(ALGraph
G,int v) // ӱ洢ͼȱ +{ + int w; + ArcNode* p; + visited[v]=true; // ʱ־ + cout<adjvex; // δʹ + if(!visited[w]) + DFS3(G,w); // DFS + p=p->nextarc; // 㣬DFS + } +} + +template +void ConnectVex(ALGraph
G) // ͼͨϢ +{ + int k,num=0; // numͨ + for(k=0;k +int Maxdist( ALGraph
G, int v) +{ + int i,w; + ArcNode *p; + LinkQueue Q; // һ + InitQueue(Q); + for(i=0;iadjvex; + if(!visited[w]) // δ + { + visited[w]=true; // ʱ־ + EnQueue(Q,w); // + } + p=p->nextarc; // һڽӵ + } + } + return v; +} + + +bool visited[MAX_VEXNUM]={false}; + +void main() +{ + char u,v; + int k; + ALGraph G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDG(G); + cout<>v; + k=LocateVex(G,v); + if(k==-1) + cout<<"\n"< +struct VNode{ + DT data; // Ϣ + ArcNode *firstarc; // ָһöָ +}; + +template +struct ALGraph{ + VNode
vertices[MAX_VEXNUM]; //㼯 + int vexnum;// + int arcnum;// +}; + +template +void DispG(ALGraph
G) +{ + int i; + ArcNode *p; + cout<adjvex) //ʱһ߱ + { + cout<<"("<adjvex].data<<")"<<'\t'; + } + p = p->nextarc; + } + } + cout< +int LocateVex(ALGraph
G, DT v) +{ + for(int i=0;i +void CreateUDG(ALGraph
&G) +{ + int i,j,k; + DT v1,v2; + ArcNode *p; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vertices[i].data; + G.vertices[i].firstarc = NULL; + } + for(k=0;k>v1>>v2; + i = LocateVex(G,v1); + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"<adjvex = j; + p->nextarc = G.vertices[i].firstarc; // v1ͷ±߽ + G.vertices[i].firstarc = p; + p = new ArcNode; // һµı + p->adjvex = i; + p->nextarc = G.vertices[j].firstarc; // v2ͷ±߽ + G.vertices[j].firstarc = p; + } +} + + +template +void DestroyGraph(ALGraph
G) // ٱ߽ +{ + int i; + ArcNode *p,*q; + for(i = 0;inextarc; + delete p; // ɾ߽ + p = q; + } + } + G.arcnum = 0; + G.vexnum = 0; +} + +template +bool GetVex(ALGraph
G, int k,DT &v) // ȡ k ֵ +{ + if(k<0||k>=G.vexnum) // 㲻ڣfalse + return false; + v=G.vertices[k].data; // ڣȡ k ֵ + return true; // true +} + +template +bool PutVex(ALGraph
&G, DT &u,DT v) // ޸Ķ u ֵ +{ + int k = LocateVex(G,u); + if(k<0) // u + return false; + G.vertices[k].data = v; // öuֵ + return true; +} + +template +int FirstAdjVex(ALGraph
G, int u) // 󶥵 u ĵһڽӵ +{ + ArcNode * p; + if(u<0 || u>=G.vexnum) // u + return -1; + p = G.vertices[u].firstarc; // uڣڽӵ㣬p Ϊһڽӵλ + if(p) + { + return p->adjvex; + } + else + { + return -1; + } +} + +template +int NextAdjVex(ALGraph
G, int u,int w) // 󶥵 u w һڽӵ +{ + ArcNode *p; + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum ) // + return -1; + p = G.vertices[u].firstarc; // u ı + while( p && (p->adjvex!=w)) // w ߽ + { + p = p->nextarc; + } + if(!p||!p->nextarc) // ûҵ w w һ + return -1; + else // 򣬷һڽӵλ + { + return p->nextarc->adjvex; + } +} + +template +bool InsertVex(ALGraph
&G, DT v) // Ӷ +{ + int j; + char ans; + DT w; + if(G.vexnum > MAX_VEXNUM) // Ϊඥ¶ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ:"<>w; + j=LocateVex(G,w); + if(j>=0) // ڣӱ + InsertArc(G,v,w); + else + cout<>ans; + }; + return true; +} + + +template +bool InsertArc(ALGraph
&G, DT v,DT w) // ӱ(v,w) +{ + ArcNode *p; + int i,j; + i = LocateVex(G,v); + j = LocateVex(G,w); + if(i<0||j<0 || i==j) // 㲻ڻ˵ͬ,ܲ + { + cout<<"\n㲻ڻͬܲ룡"<adjvex==j) + { + cout<<"ߴڣܲ룡"<nextarc; + } + G.arcnum++; // 1 + p = new ArcNode; + p->adjvex = j; + p->nextarc = G.vertices[i].firstarc; // (v,w)߽ڵiͷ + G.vertices[i].firstarc = p; + p = new ArcNode; + p->adjvex = i; // (w,v)߽ڵjͷ + p->nextarc = G.vertices[j].firstarc; + G.vertices[j].firstarc = p; + return true; +} + +template +bool DeleteArc(ALGraph
&G, DT v,DT w) // ɾ(v,w) +{ + ArcNode *p,*q; + int i,j; + cout<<"Hello DeleteArc!"<adjvex!=j) // p p ָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p&&p->adjvex ==j) // ҵ(v,w) + { + if(p == G.vertices[i].firstarc) // 1 ߽ + { + G.vertices[i].firstarc = p->nextarc; + } + else // ǵ 1 ߽ + { + q->nextarc = p->nextarc; + } + delete p; + G.arcnum--; + p = G.vertices[j].firstarc; + while(p&&p->adjvex!=i) // pqָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p == G.vertices[j].firstarc) // 1 ߽ + { + G.vertices[j].firstarc = p->nextarc; + } + else // ǵ1߽ + { + q->nextarc = p->nextarc; + } + delete p; + } + cout<<"Bye-bye DeleteArc!"< +bool DeleteVex(ALGraph
&G, DT v) // ɾv +{ + int i,j; + ArcNode *p; + DT w; + i = LocateVex(G,v); + if(i<0) + { + cout<<"㲻ڣ"<adjvex; + GetVex(G,j,w); + DeleteArc(G,v,w); + p=G.vertices[i].firstarc; + } + for(j=i+1;j +void DFS(ALGraph
G, int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ʶѷ + cout<=0;w=NextAdjVex(G,v,w)) // vڽӵw + { + if(!visited[w]) // δʣDFS + DFS(G,w); + } +} + +// 㷨6.9 +template +void DFSTraverse(ALGraph
G) // ڽӱ洢ͼȱ +{ + int i ; + for(i = 0;i +void BFS(ALGraph
G, int v) // ͨͼĹȱ +{ + int w; + ArcNode *p; + LinkQueue Q; + InitQueue(Q); + cout<adjvex; + if(!visited[w]) + { + cout<nextarc; + } + } +} + + +template +bool BFSTraverse(ALGraph
G) // ڽӱ洢ͼĹȱ +{ + int i; + for(i = 0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include +#include "ALGraph.h" +#include "LinkQueue.h" +using namespace std; + +void DispMenu()ͼͨϢ +{ + cout<<"\nѡҪIJ"< +void DFS3(ALGraph
G,int v) // ӱ洢ͼȱ +{ + int w; + ArcNode* p; + visited[v]=true; // ʱ־ + cout<adjvex; // δʹ + if(!visited[w]) + DFS3(G,w); // DFS + p=p->nextarc; // 㣬DFS + } +} + +template +void ConnectVex(ALGraph
G) // ͼͨϢ +{ + int k,num=0; // numͨ + for(k=0;k +int Maxdist( ALGraph
G, int v) +{ + int i,w; + ArcNode *p; + LinkQueue Q; // һ + InitQueue(Q); + for(i=0;iadjvex; + if(!visited[w]) // δ + { + visited[w]=true; // ʱ־ + EnQueue(Q,w); // + } + p=p->nextarc; // һڽӵ + } + } + return v; +} + + +bool visited[MAX_VEXNUM]={false}; + +void main() +{ + char u,v; + int k; + ALGraph G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDG(G); + cout<>v; + k=LocateVex(G,v); + if(k==-1) + cout<<"\n"< +struct VNode{ + DT data; // Ϣ + ArcNode *firstarc; // ָһöָ +}; + +template +struct ALGraph{ + VNode
vertices[MAX_VEXNUM]; //㼯 + int vexnum;// + int arcnum;// +}; + +template +void DispG(ALGraph
G) +{ + int i; + ArcNode *p; + cout<adjvex) //ʱһ߱ + { + cout<<"("<adjvex].data<<")"<<'\t'; + } + p = p->nextarc; + } + } + cout< +int LocateVex(ALGraph
G, DT v) +{ + for(int i=0;i +void CreateUDG(ALGraph
&G) +{ + int i,j,k; + DT v1,v2; + ArcNode *p; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vertices[i].data; + G.vertices[i].firstarc = NULL; + } + for(k=0;k>v1>>v2; + i = LocateVex(G,v1); + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"<adjvex = j; + p->nextarc = G.vertices[i].firstarc; // v1ͷ±߽ + G.vertices[i].firstarc = p; + p = new ArcNode; // һµı + p->adjvex = i; + p->nextarc = G.vertices[j].firstarc; // v2ͷ±߽ + G.vertices[j].firstarc = p; + } +} + + +template +void DestroyGraph(ALGraph
G) // ٱ߽ +{ + int i; + ArcNode *p,*q; + for(i = 0;inextarc; + delete p; // ɾ߽ + p = q; + } + } + G.arcnum = 0; + G.vexnum = 0; +} + +template +bool GetVex(ALGraph
G, int k,DT &v) // ȡ k ֵ +{ + if(k<0||k>=G.vexnum) // 㲻ڣfalse + return false; + v=G.vertices[k].data; // ڣȡ k ֵ + return true; // true +} + +template +bool PutVex(ALGraph
&G, DT &u,DT v) // ޸Ķ u ֵ +{ + int k = LocateVex(G,u); + if(k<0) // u + return false; + G.vertices[k].data = v; // öuֵ + return true; +} + +template +int FirstAdjVex(ALGraph
G, int u) // 󶥵 u ĵһڽӵ +{ + ArcNode * p; + if(u<0 || u>=G.vexnum) // u + return -1; + p = G.vertices[u].firstarc; // uڣڽӵ㣬p Ϊһڽӵλ + if(p) + { + return p->adjvex; + } + else + { + return -1; + } +} + +template +int NextAdjVex(ALGraph
G, int u,int w) // 󶥵 u w һڽӵ +{ + ArcNode *p; + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum ) // + return -1; + p = G.vertices[u].firstarc; // u ı + while( p && (p->adjvex!=w)) // w ߽ + { + p = p->nextarc; + } + if(!p||!p->nextarc) // ûҵ w w һ + return -1; + else // 򣬷һڽӵλ + { + return p->nextarc->adjvex; + } +} + +template +bool InsertVex(ALGraph
&G, DT v) // Ӷ +{ + int j; + char ans; + DT w; + if(G.vexnum > MAX_VEXNUM) // Ϊඥ¶ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ:"<>w; + j=LocateVex(G,w); + if(j>=0) // ڣӱ + InsertArc(G,v,w); + else + cout<>ans; + }; + return true; +} + + +template +bool InsertArc(ALGraph
&G, DT v,DT w) // ӱ(v,w) +{ + ArcNode *p; + int i,j; + i = LocateVex(G,v); + j = LocateVex(G,w); + if(i<0||j<0 || i==j) // 㲻ڻ˵ͬ,ܲ + { + cout<<"\n㲻ڻͬܲ룡"<adjvex==j) + { + cout<<"ߴڣܲ룡"<nextarc; + } + G.arcnum++; // 1 + p = new ArcNode; + p->adjvex = j; + p->nextarc = G.vertices[i].firstarc; // (v,w)߽ڵiͷ + G.vertices[i].firstarc = p; + p = new ArcNode; + p->adjvex = i; // (w,v)߽ڵjͷ + p->nextarc = G.vertices[j].firstarc; + G.vertices[j].firstarc = p; + return true; +} + +template +bool DeleteArc(ALGraph
&G, DT v,DT w) // ɾ(v,w) +{ + ArcNode *p,*q; + int i,j; + cout<<"Hello DeleteArc!"<adjvex!=j) // p p ָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p&&p->adjvex ==j) // ҵ(v,w) + { + if(p == G.vertices[i].firstarc) // 1 ߽ + { + G.vertices[i].firstarc = p->nextarc; + } + else // ǵ 1 ߽ + { + q->nextarc = p->nextarc; + } + delete p; + G.arcnum--; + p = G.vertices[j].firstarc; + while(p&&p->adjvex!=i) // pqָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p == G.vertices[j].firstarc) // 1 ߽ + { + G.vertices[j].firstarc = p->nextarc; + } + else // ǵ1߽ + { + q->nextarc = p->nextarc; + } + delete p; + } + cout<<"Bye-bye DeleteArc!"< +bool DeleteVex(ALGraph
&G, DT v) // ɾv +{ + int i,j; + ArcNode *p; + DT w; + i = LocateVex(G,v); + if(i<0) + { + cout<<"㲻ڣ"<adjvex; + GetVex(G,j,w); + DeleteArc(G,v,w); + p=G.vertices[i].firstarc; + } + for(j=i+1;j +void DFS(ALGraph
G, int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ʶѷ + cout<=0;w=NextAdjVex(G,v,w)) // vڽӵw + { + if(!visited[w]) // δʣDFS + DFS(G,w); + } +} + +// 㷨6.9 +template +void DFSTraverse(ALGraph
G) // ڽӱ洢ͼȱ +{ + int i ; + for(i = 0;i +void BFS(ALGraph
G, int v) // ͨͼĹȱ +{ + int w; + ArcNode *p; + LinkQueue Q; + InitQueue(Q); + cout<adjvex; + if(!visited[w]) + { + cout<nextarc; + } + } +} + + +template +bool BFSTraverse(ALGraph
G) // ڽӱ洢ͼĹȱ +{ + int i; + for(i = 0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< + +#include + +#include "MGraph.h" +#include "LinkQueue.h" +using namespace std; + +void DispMenu() +{ + cout<<"\nѡҪIJ"< +bool IsConected(MGraph
G, int i, int j) +{ + int k; + for(k=0;k +bool IsGraphConected(MGraph
G) +{ + int i,flag=1; + for(i=0;i G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // ͼ + CreateUDG(G); + cout<>u>>v; + i=LocateVex(G,u); + j=LocateVex(G,v); + if(i==-1 ||j==-1 || i==j) // 㲻 + cout<<"\n㲻ڻͬ "< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͱ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateUDG(MGraph
&G) +{ + int i,j,k; + DT v1,v2; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 ߵڽӵ + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==0 ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ"<>w; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w); + else + cout<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w) // ֵΪvwӱ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + return false; // ܲߣfalse + G.arcs[i][j]=1; + G.arcs[j][i]=1; + G.arcnum++; + return true; +} + +template +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ߲ڣfalse + { + cout<<"߲ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + //cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͱ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateUDN(MGraph
&G) +{ + int i,j,k,weight; + DT v1,v2; + cout<<"Ķ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ı "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 ߵڽӵͱȨֵ + cin>>weight; + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==INF ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j,weight; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵͱߵȨֵ"<>w>>weight; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w,weight); + else + cout<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w,int weight) // ֵΪvwӱ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + { + cout<<"\n㲻ڣͬܲ룡"< +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ߲ڣfalse + { + cout<<"߲ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +#include "LinkQueue.h" +#include "Mgraph.h" +#include +using namespace std; + +const MAX_ARCNUM=50; + +// С +//㷨6.18 Prim㷨 +struct CEdge // ѡߴ洢 +{ + int adjvex; // Uмϵ + int lowcost; // СߵȨֵ +}; + +int minEdge(CEdge closeEdge[],int n) +{ + int i, k=0; + int min = INF; + for ( i=0; i +bool Prim_MST(MGraph
G, DT v) // ӶvʼС +{ + CEdge closeEdge[MAX_VEXNUM]; + int i,j,k,mincost = 0; + k=LocateVex(G,v); + if(k==-1) // 㲻 + { + cout<<"㲻ڣ"<edge[j+1].cost) // 2.1Ԫ򣬻λ + { + temp=edge[j];edge[j]=edge[j+1];edge[j+1]=temp; // R[j]<-->R[j+1] + exchange=true; // 2.2 ־Ϊtrue + } + } + } +} + +int parent[MAX_VEXNUM]; +void Connect(int &x,int &y) // ͨʶ +{ + if(x +bool Kruskal_MST(MGraph
G) // ɴ +{ + int mincost=0,Num_Edge=0; + char u,v; + int i,j,k=0; + Edge edge[MAX_ARCNUM]; + for(i=0;i G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: // + CreateUDN(G); + cout<>v; + Prim_MST(G,v); + break; + case 3: // Kruskal㷨 + Kruskal_MST(G); + cout< +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͻ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateDN(MGraph
&G) +{ + int i,j,k,weight; + DT v1,v2; + cout<<"Ķ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"Ļ "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 뻡ڽӵͻȨֵ + cin>>weight; + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjvex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjvex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==INF ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j,weight; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵͻȨֵ"<>w>>weight; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w,weight); + else + cout<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w,int weight) // ֵΪvwӻ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + { + cout<<"\n㲻ڻѴڣܲ룡"< +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ڣfalse + { + cout<<"ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS2(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; // һ + InitQueue(Q); + cout<=0;w=NextAdjvex(G,v,w)) // vڽӵ + if(!visited[w]) // δ + { + cout< +void BFSTraverse(MGraph
G) // ȱ +{ + int i; + for(i=0;i +#include "LinkQueue.h" +#include "Mgraph.h" +#include +using namespace std; + +const MAX_ARCNUM=50; + +//㷨6.20 Dijkstra㷨 +template +void ShortestPath_DIJ(MGraph
G, int v0) // ӶvʼС +{ + int v,i,w,min; + bool S[MAX_VEXNUM]={false}; // SеĶ + int D[MAX_VEXNUM]; // Դ㵽ľ + int P[MAX_VEXNUM]={-1}; // Դ㻥·Ϣ + for(v=0;v +void ShortestPath_Floyd(MGraph
G) // ɴ +{ + int k,i,j; + int D[MAX_VEXNUM][MAX_VEXNUM]; // D[i][j]ʾiͶj̾ + int P[MAX_VEXNUM][MAX_VEXNUM]; // ̾·Ϣ + for(i=0;i G,G1,G2; + G1.vexnum=5; // Dijkstra㷨ͼ + G1.arcnum=7; + G1.vexs[0]='A';G1.vexs[1]='B';G1.vexs[2]='C'; + G1.vexs[3]='D';G1.vexs[4]='E'; + for(i=0;i>choice; + switch(choice) + { + case 1: // + f=true; + CreateDN(G); + cout<>w; + v0=LocateVex(G1,w); + if(v0==-1) + cout<<"㲻ڣ"< +#include "LinkQueue.h" +#include "ALGraph.h" +#include +using namespace std; + +void DispMenu() +{ + cout<<"ѡҪIJ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: + CreateUDG(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵ֵ: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺ͼΪ"<>v; + InsertVex(G,v); + cout<<"붥ӦߺͼΪ"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ:"<>u>>v; + InsertArc(G,u,v); + cout<<"ߺͼΪ"<>u>>v; + DeleteArc(G,u,v); + cout<<"ߺͼΪ"< +struct VNode{ + DT data; //Ϣ + ArcNode *firstarc;//ָһöָ +}; + +template +struct ALGraph{ + VNode
vertices[MAX_VEXNUM];//㼯 + int vexnum;// + int arcnum;// +}; + +template +void DispG(ALGraph
G) +{ + int i; + ArcNode *p; + cout<adjvex) //ʱһ߱ + { + cout<<"("<adjvex].data<<")"<<'\t'; + } + p = p->nextarc; + } + } + cout< +int LocateVex(ALGraph
G, DT v) +{ + for(int i=0;i +void CreateUDG(ALGraph
&G) +{ + int i,j,k; + DT v1,v2; + ArcNode *p; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vertices[i].data; + G.vertices[i].firstarc = NULL; + } + //cout<<"ÿڽӵ㣺 "<>v1>>v2; + i = LocateVex(G,v1); + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"<adjvex = j; + p->nextarc = G.vertices[i].firstarc; //ڱͷ + G.vertices[i].firstarc = p; + p = new ArcNode; //һµĻ + p->adjvex = i; + p->nextarc = G.vertices[j].firstarc; //ڱͷ + G.vertices[j].firstarc = p; + } +} + + +template +void DestroyGraph(ALGraph
G) +{ + int i; + ArcNode *p,*q; + for(i = 0;inextarc; + delete p;//ɾ + p = q; + } + } + G.arcnum = 0; + G.vexnum = 0; +} + +template +bool GetVex(ALGraph
G, int k,DT &v) +{ + if(k<0||k>=G.vexnum) //㲻 + return false; + v=G.vertices[k].data; + return true; +} + +template +bool PutVex(ALGraph
&G, DT &u,DT v) +{ + int k = LocateVex(G,u); + if(k<0) //ö㲻 + return false; + G.vertices[k].data = v; + return true; +} + +template +int FirstAdjVex(ALGraph
G, int u) +{ + ArcNode * p; + if(u<0 || u>=G.vexnum) // 㲻 + return -1; + p = G.vertices[u].firstarc;//pָ±Ϊiĵһڽӵ + if(p) + { + return p->adjvex; + } + else + { + return -1; + } +} + +template +int NextAdjVex(ALGraph
G, int u,int w) +{ + ArcNode *p; + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum ) // + return -1; + p = G.vertices[u].firstarc; + while(p &&(p->adjvex!=w)) + //pָ򶥵w + { + p = p->nextarc; + } + if(!p||!p->nextarc) //ûҵwwһ + return -1; + else + //ҵwwһ + { + return p->nextarc->adjvex; + } +} + +template +bool InsertVex(ALGraph
&G, DT v) +{ + int j; + char ans; + DT w; + if(G.vexnum > MAX_VEXNUM) + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ:"<>w; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w); + else + cout<>ans; + }; + return true; +} + + +template +bool InsertArc(ALGraph
&G, DT v,DT w) +{ + ArcNode *p; + int i,j; + i = LocateVex(G,v); + j = LocateVex(G,w); + if(i<0||j<0 || i==j) // 㲻ڻ˵ͬ,ܲ + { + cout<<"\n㲻ڻͬܲ룡"<adjvex==j) + { + cout<<"ߴڣܲ룡"<nextarc; + } + G.arcnum++; + p = new ArcNode; + p->adjvex = j; + p->nextarc = G.vertices[i].firstarc; //(v,w)߽ڵiͷ + G.vertices[i].firstarc = p; + p = new ArcNode; + p->adjvex = i; //(w,v)߽ڵjͷ + p->nextarc = G.vertices[j].firstarc; + G.vertices[j].firstarc = p; + return true; +} + +template +bool DeleteArc(ALGraph
&G, DT v,DT w) +{ + ArcNode *p,*q; + int i,j; + cout<<"Hello DeleteArc!"<adjvex!=j) // ppָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p&&p->adjvex ==j) // ҵ + { + if(p == G.vertices[i].firstarc) // 1߽ + { + G.vertices[i].firstarc = p->nextarc; + } + else // ǵ1߽ + { + q->nextarc = p->nextarc; + } + delete p; + G.arcnum--; + p = G.vertices[j].firstarc; + while(p&&p->adjvex!=i) // pqָIJǴɾ + { + q = p; + p = p->nextarc; + } + if(p == G.vertices[j].firstarc) // 1߽ + { + G.vertices[j].firstarc = p->nextarc; + } + else // ǵ1߽ + { + q->nextarc = p->nextarc; + } + delete p; + } + cout<<"Bye-bye DeleteArc!"< +bool DeleteVex(ALGraph
&G, DT v) +{ + int i,j; + ArcNode *p; + DT w; + i = LocateVex(G,v); + cout<<"ɾ"<adjvex; + cout<<"ɾ߶Ϊ"< +void DFS(ALGraph
G, int v) +{ + int w; + visited[v] = true; // ѷ + cout<=0;w=NextAdjVex(G,v,w)) + { + if(!visited[w]) + DFS(G,w); + } +} + +// 㷨6.9 +template +void DFSTraverse(ALGraph
G) +{ + int i ; + for(i = 0;i +void BFS(ALGraph
G, int v) +{ + int w; + ArcNode *p; + LinkQueue Q; + InitQueue(Q); + cout<adjvex; + if(!visited[w]) + { + cout<nextarc; + } + } +} + + +template +bool BFSTraverse(ALGraph
G) +{ + int i; + for(i = 0;i +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +struct QNode // +{ + DT data; //򣬴洢Ԫֵ + QNode *next;//ָָһ +}; + +template +struct LinkQueue +{ + QNode
* front; + QNode
* rear; +}; + + +//㷨3.19 +template +void InitQueue(LinkQueue
&Q)//ն +{ + Q.front=new QNode
; //ͷ + if(!Q.front) exit(1); //ʧܣ + Q.front->next=NULL; + Q.rear=Q.front; +} + +//㷨3.20 +template +void DestroyQueue(LinkQueue
&Q)//ͷ +{ + QNode
*p; + while(Q.front)//ͷ㿪ʼͷŽ + { + p=Q.front; + Q.front=Q.front->next; + delete p; + } +} + +//㷨3.21 +template +bool EnQueue(LinkQueue
&Q,DT e) +{ + QNode
*p; + p=new QNode
; // ½ + if(!p) return false; // ʧܣ + p->data=e; // ½㸳ֵ + p->next=NULL; // ڶβ + Q.rear->next=p; + Q.rear=p; + return true; // ӳɹtrue +} + +//㷨3.22 +template +bool DeQueue(LinkQueue
&Q,DT &e) +{ + QNode
*p; + if(Q.front==Q.rear) return false; //ӿգfalse + p=Q.front->next; // ȡԪ + e=p->data; + Q.front->next=p->next; //Ԫس + if(Q.rear==p) //ֻһԪʱӣ + Q.rear=Q.front; // ޸Ķβ + delete p; + return true; // ӳɹtrue +} + + +//㷨3.23 ȡͷԪ +template +bool GetHead(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) return false; // ӿգfalse + e=Q.front->next->data; + return true; // ɾɹtrue +} + +//ȡβԪ +template +bool GetTail(LinkQueue
Q,DT &e) +{ + if(Q.front==Q.rear) // ӿ + return false; // false + e=Q.rear->data; // ȡβԪ + return true; // true +} + +//ӿ +template +bool QueueEmpty(LinkQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; //true + else //ǿ + return false; //false +} + +//ʾ +template +void DispQueue(LinkQueue
Q) +{ + QNode
*p; + p=Q.front->next; + while(p) + { + cout<data<<"\t"; + p=p->next; + } + cout< +#include "LinkQueue.h" +#include "Mgraph.h" +#include +using namespace std; + + + +// ͼ + +void DispMenu() +{ + cout<<"ѡҪIJ"< G; + int choice; + do + { + DispMenu(); + cin>>choice; + switch(choice) + { + case 1: + CreateUDN(G); + cout<>u; + k=LocateVex(G,u); + if(k!=-1) + cout<<""<>index; + if(GetVex(G,index,v)) + cout<<"λΪ"<>u; + cout<<"ĺ󶥵ֵ: "; + cin>>v; + PutVex(G,u,v); + cout<<"ֵ޺ͼΪ"<>v; + InsertVex(G,v); + cout<<"붥ӦߺͼΪ"<>v; + DeleteVex(G,v); + cout<<"ɾͼΪ"<>u>>v; + InsertArc(G,u,v); + cout<<"ߺͼΪ"<>u>>v; + DeleteArc(G,u,v); + cout<<"ߺͼΪ"< +struct MGraph // ͼڽӾʾ洢 +{ + DT vexs[MAX_VEXNUM]; // Ϣ + int arcs[MAX_VEXNUM][MAX_VEXNUM]; + int vexnum,arcnum; // ͱ +}; + + +template +void DispG(MGraph
G) // ʾͼϢ +{ + int i,j; + DT u,v; + cout< +int LocateVex(MGraph
G,DT v) +{ + for(int i = 0;i +void CreateUDN(MGraph
&G) +{ + int i,j,k; + DT v1,v2; + cout<<"ͼĶ "; // 1. 붥 + cin>>G.vexnum ; + cout<<"ͼı "; + cin>>G.arcnum ; + cout<<""<>G.vexs[i]; + for(i=0;i>v1>>v2; // 4.1 ߵڽӵ + i = LocateVex(G,v1); // 4.2 λڽӵ + j = LocateVex(G,v2); + if(i<0 || j<0 || i==j) + { + cout<<"Ϣ룡"< +bool GetVex(MGraph
G, int k, DT &v) // ȡ u ֵv +{ + if(k<0 || k>=G.vexnum) // uڣfalse + return false; + else + { + v=G.vexs[k]; + return true; + } +} + + +template +bool PutVex(MGraph
&G,DT &u,DT v) // Ϊu㸳ֵ +{ + int k; + k=LocateVex(G,u); + if(k<0 ) // uڣfalse + return false; + else // uڣֵ + { + G.vexs[k] = v; + return true; + } +} + +//㷨6.3 ֵҵһڽӵ +template +int FirstAdjVex(MGraph
G,int u) +{ + if(u<0 || u>=G.vexnum) // 㲻 + return -1; // ڽӵ㣬-1 + for(int j=0;j +int NextAdjVex(MGraph
G,int u,int w) //ҵuڽӵWһڽӵ +{ + if(u<0 || u>=G.vexnum || w<0 + || w>=G.vexnum || G.arcs[u][w]==0 ) // + return -1; // ڽӵ + for(int j=w+1;j +bool InsertVex(MGraph
&G,DT v) // ֵΪvĶ +{ + DT w; + int j; + char ans; + if(G.vexnum>=MAX_VEXNUM) // ޴洢ռ䣬ܲ + { + cout<<"޴洢ռ䣬ܲ!"<>ans; + while(ans=='Y'|| ans=='y') + { + cout<<"һֵ"<>w; + j=LocateVex(G,w); + if(j>=0) // + InsertArc(G,v,w); + else + cout<>ans; + }; + return true; +} + +template +bool InsertArc(MGraph
&G,DT v,DT w) // ֵΪvwӱ +{ int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0 || j<0 || i==j) // 㲻ڻ˵ͬ + return false; // ܲߣfalse + G.arcs[i][j]=1; + G.arcs[j][i]=1; + G.arcnum++; + return true; +} + +template +bool DeleteArc(MGraph
&G,DT v,DT w) // ֵɾ +{ + int i = LocateVex(G,v); + int j = LocateVex(G,w); + if(i<0||j<0||i == j) // ߲ڣfalse + { + cout<<"߲ڣ"< +bool DeleteVex(MGraph
&G,DT v) // ֵɾ +{ + int i,j; + DT w; + i = LocateVex(G,v); // 㶨λ + if(i<0) + { + cout<<"㲻ڣ"< +void DFS(MGraph
G,int v) // ͨͼȱ +{ + int w; + visited[v] = true; // ȷindex + cout< +void DFSTraverse(MGraph
G) // ͨͼȱ +{ + int i; + for(i=0;i +void BFS(MGraph
G,int v) +{ + int w; + LinkQueue Q; + InitQueue(Q); + cout<=0;w=Nextadjvex(G,u,w))) + if(!visited[w]) + { + cout< +void BFSTranverse(MGraph
G) +{ + int i; + for(i=0;i +bool BFSTraverse(MGraph
G) // ȱ +{ + int i; + int u,w; + LinkQueue Q; + InitQueue(Q); + for(i = 0;i=0;w=NextAdjVex(G,u,w)) + { + if(!visited[w]) + { + visited[w] = true; + cout< +//#include"assert.h" +//#include"sort.h" +using namespace std; + + // ݼ,0Ԫδ +int IA[9]={0,58,40,65,97,87,8,17,58}; // ֱӲ롢۰ +int SA[11]={0,58,40,65,97,87,8,17,58,46,60}; // ϣ +int BA[9]={0,58,40,65,97,87,8,17,58}; // ð +int QA[9]={0,58,35,65,97,87,8,17,58}; // +int SSA[9]={0,58,35,25,97,87,8,58,17}; // ѡ +int HA[9]={0,38,25,16,36,18,32,28,50}; // +int EA1[8]={0,58,40,25,87,8,58,17}; // 鲢 +int EA2[9]={0,8,4,5,2,6,3,7,9}; // ݹ鲢 +int RA[9]={0,769,763,63,249,243,545,281,89}; // + + + +void CopyData(int a[],int n, int R[]) // ݺһԪ1Ԫʼ +{ + for(int i=1;i<=n;i++) + R[i]=a[i]; +} + +void DispData(int R[], int n) // ʾ +{ + int i; + for(i=1;i<=n;i++) + cout<R[i]) // 1.R[i-1]>R[i] + { + R[0]=R[i]; // 1.1 R[i]Ϊ + R[i]=R[i-1]; // 1.2 R[i] + for(j=i-2;R[j]>R[0];--j) // 1.3 ji-2ʼR[j]>R[0] R[j]ƣj-- + R[j+1]=R[j]; // 1.4 R[i]i++ + R[j+1]=R[0]; + } + cout<<" "<R[i]) high=m-1; // 2.2.2 R[m]>R[0]ѯϽ + else low=m+1; // 򣬵½ + } // 3.high+1Ԫƶ + for(j=i-1;j>=high+1;--j) // 3.1 R[i-1]R[high+1]κ + R[j+1]=R[j]; // 3.2 R[i]ƵR[high+1] + R[high+1]=R[0]; + cout<<" "<0 && (R[0]R[j+1]) // 2.1Ԫ򣬻λ + { + temp=R[j],R[j]=R[j+1],R[j+1]=temp; // R[j]<-->R[j+1] + exchange=true; // 2.2 ־Ϊtrue + } + } + cout<<" "<=pivot) // 2.1 Ӹ߶ + --high; // 2.1.1 λò + R[low]=R[high]; // 2.1.2 С¼ƵͶ + while(low R[j]) // 2.2ڽϴߣ¼ƶ + break; + R[s]=R[j]; // 2.3 R[j]Ϊ + s=j; // 2.4 һ + } + R[s]=R[0]; // R[s]뵽λ +} + +//㷨8.9 +void CreateHeap(int R[],int n) //R[1..n]ɴ +{ + int i; + for(i=n/2;i>0;--i) // ׸Ҷ㿪ʼ + { + HeapAdjust(R,i,n); // HeapAdjust + } + cout<<" \t"; // + DispData(R,n); +} + +//㷨8.10 +void HeapSort(int R[],int n) +{ + int i,t; + CreateHeap(R,n); // + for(i=1;ikeys[0]=R[i]/100; // λ + p->keys[1]=R[i]%100/10; // ʮλ + p->keys[2]=R[i]%100%10; // λ + p->next=NULL; + if (i==1) // Ԫ + { + L=p; + rr=L; + } + else // Ԫ + { + rr->next=p; + rr=p; + } + cout<keys[d]; + cout<<'\t'; + p=p->next; + } + cout<=0;i--) // dλdؼ֣d + { // ÿһ + for(j=0;jkeys[i]; // 2.1iӹؼΪkk + if(h[k]==NULL) // 2.1.1Ԫ㣬 + { + h[k]=L;t[k]=L; // βָͷ + } + else // 2.1.2Ԫ㣬 + { + t[k]->next=L; t[k]=L; // β + } + L=L->next; // 2.2 ȡһ´¼ + } + L=NULL; // ռ + for(j=0;jnext=h[j];T=t[j]; // β + } + } + } + T->next=NULL; // β㣬nextΪ + cout<<" "<>choice; + switch(choice) + { + case 1: // ֱӲ + { + cout<<"ֱӲ"<R + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R,n); + InsertSort(R,n); // ֱӲ + ; + break; + } + case 2: // ۰ + { + cout<<"۰"<R + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R,n); + BInsertSort(R,n); // ۰ + cout<R[] + cout<<"ʼ"<<'\t'; + DispData(R,n); // ʾʼ + ShellSort(R,n,d,3); // ϣ + break; + } + case 4: // ð + { + cout<<"ð"<R[] + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R,n); + Bubble_Sort(R,n); // ð + break; + } + case 5: // + { + cout<<""<R[] + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R,n); + QSort(R,1,n); // + cout<R[] + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R,n); + SelectSort(R,n); // ѡ + break; + } + case 7: // + { + cout<<""<R[] + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R,n); + HeapSort(R,n); // + cout<R1 + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R1,n1); + MergeSort(R1,n1); // ·ݹ鲢 + cout<<"鲢򣨵ݹ飩"<R2 + cout<<"ʼ"<<'\t'; // ʾʼ + DispData(R2,n2); + MergeSort1(R2,n2); + cout<<"\t"; + DispData(R2,n2); // + break; + } + case 9: // + { + int r,d; + r=10; // ʮ + d=3; // 3ؼ + RNode *L; // ʽ洢ͷ + L=NULL; // ձ + cout<<""<R + cout<<":"; + DispData(R,n); // ʾʼ + CreateDL(L,R,n); // + cout<<"ʼ"<<'\t'; // ʾ + DispDL(L); + RadixSort(L,r,d); // + cout<<"\t"; // ʾ + DispDL(L); + break; + } + + case 0://˳ + ; + cout<<""< & L) +{//˳LֱӲ + for(int i=2;i<=L.length;i++) + if(L.key[i]<=L.key[i-1])//"<"轫L.key[i]ӱ + { + L.key[0]=L.key[i];//Ϊڱ + L.key[i]=L.key[i-1]; + for(int j=i-2;L.key[0]<=L.key[j];--j) + L.key[j+1]=L.key[j];//¼ + L.key[j+1]=L.key[0];//뵽ȷλ + } +} + +//2۰ +template +void BInsertSort(SqList &L) +{//˳L۰ + int high,low,m; + for(int i=2;i<=L.length;i++) + { + L.key[0]=L.key[i];//L.key[i]ݴ浽L.key[0] + low=1; + high=i-1; + while(low<=high)//key[low]key[high]۰λ + { + m=(low+high)/2;//۰ + if(L.key[0]<=L.key[m]) + high=m-1;//Ͱ + else + low=m+1;//߰ + } + for(int j=i-1;j>=high+1;--j) + L.key[j+1]=L.key[j]; //¼ + L.key[high+1]=L.key[0]; // + } +} +//(3) +const int SIZE=100;//̬ +const int MAXINT=10000; +template +struct StaListNode{ + type data;//¼ + int next;//ָ +}; +template +class StaticList{ + public: + StaListNode node[SIZE]; + int curlen;//ʵʳ + StaticList()//캯 + { + cout<<"̬"<>curlen; + cout<<"ݣ"<>node[i].data; + } + } + ~StaticList()// + { + } +}; +void StaListInsertSort() +{ + StaticList sl; + int min,max;//ֵСֵ + sl.node[0].next=1; + sl.node[1].next=0;//ʼγֻͷѭ + max=min=1; + for(int i=2;i<=sl.curlen;i++)//ѭм㣬n-1 + { + + if(sl.node[i].data<=sl.node[min].data) + { + sl.node[0].next=i; + sl.node[i].next=i-1; + min=i; + } + if(sl.node[i].data>=sl.node[max].data) + { + sl.node[i].next=0; + sl.node[max].next=i; + max=i; + } + if(sl.node[i].datasl.node[min].data) + { + int index1=min,index2;//index2index1ǰһ± + while(sl.node[i].data>=sl.node[index1].data) + { + index2=index1; + index1=sl.node[index1].next; + } + sl.node[i].next=index1; + sl.node[index2].next=i; + } + + } + cout<<"£"< +void ShellInsert(SqList &L,int dk) +{//˳һϣ + for(int i=dk+1;i<=L.length;i++) + if(L.key[i]<=L.key[i-dk]) + { + L.key[0]=L.key[i]; + for(int j=i-dk;j>0&&L.key[0]<=L.key[j];j-=dk) + L.key[j+dk]=L.key[j]; + L.key[j+dk]=L.key[0]; + } +} +template +void ShellSort(SqList &L,int dlta[],int t) +{ + //dl[0]--dl[t-1]˳Lϣ + for(int k=0;k +void BubbleSort(SqList & L) +{ + for(int i=1;iL.key[j+1]) + { + t=L.key[j]; + L.key[j]=L.key[j+1]; + L.key[j+1]=t; + } + } +} +//(2) +template +int Partition(SqList& L,int low,int high) +{//˳Lӱkey[low]--key[high]еļ¼¼λλã +//ʱ֮ǰ󣩵ļ¼С + type pivotkey; + L.key[0]=L.key[low];//ӱĵһ¼¼ + pivotkey=L.key[low];//ؼ + while(low=pivotkey) --high; + L.key[low]=L.key[high];//Сļ¼Ͷ + while(low +void QSort(SqList& L,int low,int high) +{ + int mid;//λ + if(low +void QuitSort(SqList& L)//˳п +{ + QSort(L,1,L.length); + +} +//ѡ +//(1)ѡ +template +int SelectMinKey(SqList& L,int n) +{ + int min=n; + type minkey;//Сֵ + minkey=L.key[n]; + for(int i=n+1;i<=L.length;i++) + if(L.key[i] +void SelectSort(SqList& L) +{ + //˳Lѡ + int j; + type t; + for(int i=1;i<=L.length;i++) + { + j=SelectMinKey(L,i);//L.key[i]--L.key[L.length]ѡСļ¼ַj + if(i!=j)//¼ + { + t=L.key[i]; + L.key[i]=L.key[j]; + L.key[j]=t; + } + } +} +//(2)ѡ + +template +class TreeNode{ + public: + type data;//ֵ + int index;//λ + int active;//ǷȽϱ־ + TreeNode& operator=(TreeNode& treenode) + { + this->data=treenode.data; + this->index=treenode.index; + this->active=treenode.active; + return *this; + } +}; +template +void ChangeTree(TreeNode*tree,int i) +{ + if(i%2==0) + tree[(i-1)/2]=tree[i-1];//iΪżʱȽ + else + tree[(i-1)/2]=tree[i+1];//iΪʱҽȽ + i=(i-1)/2;//±Ƚϣi׽λ + int j; + while(i) + { + if(i%2==0)//ȷiıȽϽλ + j=i-1; + else + j=i+1; + if(!tree[i].active||!tree[j].active) + if(tree[i].active) + tree[(i-1)/2]=tree[i]; + else + tree[(i-1)/2]=tree[j]; + else + if(tree[i].data=1) + { + for(int i=1;i<=n;i++) + result*=2; + return result; + } + else + return 1; +} +int LeapNum(int n)//Ҷӽ +{ + for(int i=1;i<100;i++) + if(Power(i-1) +void TreeSort(type a[],int n) +{//򷽷ֻ + TreeNode* tree; + int bottsize=LeapNum(n);//ײ˴ + int size=2*bottsize-1;//н + int externalindex=bottsize-1;//ʼбȽϵĽλ + tree=new TreeNode[size]; + assert(tree); + int j=0; + for(int i=externalindex;i +void OutPut(type a[],int n)// +{ + for(int i=0;i +void HeapAdjust(SqList& L,int s,int m) +{//˳ңֵĺӽɸѡҵֵ + type rc=L.key[s]; + for(int j=2*s;j<=m;j*=2) + { + if(jL.key[j]) break;//rcƳwhileѭ + L.key[s]=L.key[j];//ֵֵ + s=j;//λ + } + L.key[s]=rc; +} +template +void HeapSort(SqList& L) +{//˳Lж + type value; + for(int i=L.length/2;i>0;i--)//L.key[1...L.length]Ϊ󶥶 + HeapAdjust(L,i,L.length); + for(i=L.length;i>1;--i) + { + value=L.key[1]; + L.key[1]=L.key[i]; + L.key[i]=value; + HeapAdjust(L,1,i-1);//L.key[1...i-1]µΪ󶥶 + } + +} +// +//鲢 +template +void Merge(type *SR,type *TR,int i,int m,int n) +{//SR[i...m]SR[m+1...n]鲢ΪTR[i...n] + for(int j=m+1,k=i;i<=m&&j<=n;k++)//SRеļ¼ɴСTR + { + if(SR[i]<=SR[j]) + TR[k]=SR[i++]; + else + TR[k]=SR[j++]; + } + if(i<=m)//ʣSR[i...m]ֵTR + for(int a=i;a<=m;a++) + TR[k++]=SR[a]; + else if(j<=n)//ʣSR[j...n]ƵTR + for(int b=j;b<=n;b++) + TR[k++]=SR[b]; +} +template +void MSort(type *SR,type *TR1,int s,int t) +{ + type TR2[100];//СԸʵ¶ + int m; + //SR[s...t]鲢ΪTR[s...t] + if(s==t) + TR1[s]=SR[s]; + else + { + m=(s+t)/2;//SR[s...t]ƽΪSR[s...m]SR[m+1...t] + MSort(SR,TR2,s,m);//ݹؽSR[s...m]鲢ΪTR2[s...m] + MSort(SR,TR2,m+1,t);//ݹؽSR[m+1...t]鲢ΪTR2[m+1...t] + Merge(TR2,TR1,s,m,t);//TR2[s...m]TR2[m+1...t]鲢TR1[s...t] + } +} +template +void MergeSort(SqList &L) +{//˳L鲢 + MSort(L.key,L.key,1,L.length); +} +// +//ʽ +const RADIX=10; +typedef int ArrType[RADIX]; +ArrType f,e; +template +struct SLCell{ + type *keys; + int next; +}; +template +struct SLList{ + SLCell* SList; + int keynum; + int recnum; +}; +template +void InitSLList(SLList& SL)//̬ +{ + cout<<"̬"<>SL.recnum; + SL.SList=new SLCell[SL.recnum+1]; + assert(SL.SList); + cout<<"ؼ"<>SL.keynum; + for(int i=1;i<=SL.recnum;i++) + { + SL.SList[i].keys=new type[SL.keynum+1]; + assert(SL.SList[i].keys); + } + SL.SList[0].next=1; + cout<<""<>SL.SList[i].keys[j]; + if(i!=SL.recnum) + SL.SList[i].next=i+1; + else + SL.SList[i].next=0; + } +} +template +void RelList(SLList &SL)//ͷڴռ +{ + for(int i=1;i<=SL.recnum;i++) + delete SL.SList[i].keys; + delete SL.SList; +} + + +template +void OutPut(SLList& SL)//̬ +{ + for(int i=SL.SList[0].next;i;i=SL.SList[i].next) + { + //cout< +void Distrbute(SLCell* r,int i,ArrType &f,ArrType& e) +{//iؼkeys[i]RADIXӱʹͬһӱм¼keys[i]ͬ +//f[0...RADIX]e[0...RADIX]ֱָӱеһһ¼ + int j; + for(j=0;j +void Collect(SLCell* r,int i,ArrType &f,ArrType& e) +{//keys[i]Сf[0...RADIX]ָӱӳһ + int j; + for( j=0;!f[j];j++);//ҵһǿӱ + r[0].next=f[j];//r[0].nextָһǿӱеһ + int t=e[j]; + while(j +void RadixSort(SLList &SL) +{//LʹLؼС + for(int i=SL.keynum;i>=1;i--)//λζԸؼֽзռ + { + Distrbute(SL.SList,i,f,e);//i˷ + Collect(SL.SList,i,f,e);//iռ + } +} + diff --git a/OrigFiles/树和二叉树/5-1-BiTree/SqQueue_bt.h b/OrigFiles/树和二叉树/5-1-BiTree/SqQueue_bt.h new file mode 100644 index 0000000..3e76921 --- /dev/null +++ b/OrigFiles/树和二叉树/5-1-BiTree/SqQueue_bt.h @@ -0,0 +1,66 @@ +//й +template +struct SqQueue // ˳ +{ + BTNode
* *base; // ַ + int front; // ͷָ + int rear; // βָ + int queuesize; // +}; + +//㷨3.14 ʼ +template +void InitQueue(SqQueue
&Q, int m) +{ + Q.base=new BTNode
*[m]; // пռ + if(Q.base==NULL) // ռʧ + { + cout<<"δɹ"; + exit (1); // ˳ + } + Q.front=Q.rear=0; // ö + Q.queuesize=m; +} + + +//㷨3.15 +template +void DestroyQueue(SqQueue
&Q) +{ + delete [] Q.base; // ͷŶпռ + Q.front=Q.rear=0; // ö + Q.queuesize=0; +} + + +//㷨3.16 +template +bool EnQueue(SqQueue
&Q,BTNode
* e) +{ + if((Q.rear+1)%Q.queuesize==Q.front) // + return false; // false + Q.base[Q.rear]=e; // + Q.rear=(Q.rear+1)% Q.queuesize; // ޸Ķ + return true; // true +} + +//㷨3.17 +template +bool DeQueue(SqQueue
&Q,BTNode
* &e) +{ + if(Q.front==Q.rear) // ӿ + return false; + e=Q.base[Q.front]; + Q.front=(Q.front+1)%Q.queuesize; + return true; // ɾɹtrue +} + + // ӿ +template +bool QueueEmpty(SqQueue
Q) +{ + if(Q.front==Q.rear) // ӿ + return true; // true + else // Ӳ + return false; // false +} \ No newline at end of file diff --git a/OrigFiles/树和二叉树/5-1-BiTree/SqStack_bt.h b/OrigFiles/树和二叉树/5-1-BiTree/SqStack_bt.h new file mode 100644 index 0000000..ede3f93 --- /dev/null +++ b/OrigFiles/树和二叉树/5-1-BiTree/SqStack_bt.h @@ -0,0 +1,76 @@ +//ջ +template +struct SqStack // ˳ջ +{ + BTNode
* *base; // ջַ + int top; // ջָ + int stacksize; // ջ +}; + + +//㷨3.1 ʼջ +template +void InitStack(SqStack
&S, int m) +{ + S.base=new BTNode
* [m]; // ջռ + if(S.base==NULL) + { + cout<<"δɹ"; + exit (1); + } + S.top=-1; // ջ + S.stacksize=m; // ջΪm +} + + +//㷨3.2 ջ +template +void DestroyStack(SqStack
&S)// +{ + delete [] S.base; //ͷջռ + S.top=-1; + S.stacksize=0; +} + + +//㷨3.3 +template +bool Push(SqStack
&S,BTNode
* e) +{ + if(S.top==S.stacksize-1) // ջܲ + return false; + S.top++; + S.base[S.top]=e; + return true; // ɹtrue +} + +//㷨3.4 ջ +template +bool Pop(SqStack
&S,BTNode
* &e) +{ + if(S.top==-1) //ջ + return false; + e=S.base[S.top]; + S.top--; + return true; // ջɹtrue +} + +template // ȡջԪ +bool GetTop(SqStack
&S,BTNode
* &e) +{ + if(S.top==-1) // ջգfalse + return false; + e=S.base[S.top]; // ȡջԪ + return true; // true +} + + + // ջ +template +bool StackEmpty(SqStack
S) +{ + if(S.top==-1) // ջգtrue + return true; + else // ջǿգfalse + return false; +} \ No newline at end of file diff --git a/OrigFiles/树和二叉树/5-1-BiTree/bitree.cpp b/OrigFiles/树和二叉树/5-1-BiTree/bitree.cpp new file mode 100644 index 0000000..3c67bb7 --- /dev/null +++ b/OrigFiles/树和二叉树/5-1-BiTree/bitree.cpp @@ -0,0 +1,135 @@ + +#include//cout,cin +#include +using namespace std; +#include"bitree.h" +#include"SqQueue_bt.h" +#include"SqStack_bt.h" + //Բο +string fbt="a b d # # e # # c f # # g # #"; // һÿҶ# +string cbt="a b d # # e # # c # #"; // ȫÿҶ# +string gbt="a b # d # # c e # # #"; // һ +string obt="a b c d # # # # #"; // б1 + + +void dispmenu() +{ //ʾ˵ + cout<<"\nѡ1~120˳"< *bt; + int y=100,x=350; + + system("cls"); // + + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~120 ˳):"; + cin>>choice; + switch(choice) + { + case 1: // + cout<<"Բοݣ"< *p; + cout<<"\nҪѯĽֵ"<>e; + p=Search(bt,e); + if(p) + { + cout<<"\nҵ"; + cout<data< +struct BTNode // 㶨 +{ + DT data ; // + BTNode* lchild; //ָָ + BTNode* rchild; //ָָ +}; + + +//㷨5.1 ݹ㷨 +template +void PreOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + cout<data<<' '; //ϵ + PreOrDerBiTree(bt->lchild); //ݹĵǰ + PreOrDerBiTree(bt->rchild); //ݹĵǰ + } + //return; +} + +//㷨5.2 ݹ㷨 +template +void InOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + InOrDerBiTree(bt->lchild); //ݹĵ + cout<data<<' '; //ϵ + InOrDerBiTree(bt->rchild); //ݹĵ + } + //return; +} + +//㷨5.3 ݹ㷨 +template +void PostOrDerBiTree(BTNode
*bt) +{ + if(bt!=NULL) + { + PostOrDerBiTree(bt->lchild); //ݹĵú + PostOrDerBiTree(bt->rchild); //ݹĵú + cout<data<<' '; //ϵ + } + //return; +} + + +//㷨5.4 㷨 +template +void LevelBiTree(BTNode
*bt) +{ + SqQueue
Q; // һ + int m=20; + InitQueue(Q,m); + BTNode
* p; + p=bt; + if(p) EnQueue(Q,p); // ǿգ + while (!QueueEmpty(Q)) // ӷǿ + { + DeQueue(Q,p); // + cout<data; // + if(p->lchild!=NULL) // + EnQueue(Q, p->lchild); // + if(p->rchild!=NULL) // Һ + EnQueue(Q, p->rchild); // Һ + } + DestroyQueue(Q); // ٶ +} + + +//㷨5.5 DZݹ㷨 +template +void PreOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // ջ + int m=20; + InitStack(S, m); + BTNode
* p; + p=bt; + while (p!=NULL || !StackEmpty(S)) // ǿջջǿ + { + while(p!=NULL) // ǿ + { + cout<data<<' '; // ʽ + Push(S,p); // ջ + p=p->lchild; // ת + } + if(!StackEmpty(S)) // ջǿ + { + Pop(S,p); // ջ + p=p->rchild; // תջ + } + } + DestroyStack(S); //ջ +} + + +//㷨5.6 DZݹ㷨 +template +void InOrderBiTree_N(BTNode
*bt) +{ + SqStack
S; // һջ + int m=20; + InitStack(S, m); + BTNode
* p; + p=bt; + while (p!=NULL || !StackEmpty(S)) // ǿջջǿ + { + while(p!=NULL) // ǿ + { + Push(S,p); // ջ + p=p->lchild; // תջ + } + if(!StackEmpty(S)) // ջǿ + { + Pop(S,p); // ջ + cout<data<<' '; // ʳջ + p=p->rchild; // תջ + } + } + DestroyStack(S); // ջ +} + + + +//㷨5.7 DZݹ㷨 +template +void PostOrderBiTree_N(BTNode
*bt) +{ // 1. ʼ + SqStack
S; // һջ + int m=20; + InitStack(S, m); + BTNode
* p; + BTNode
* r; + p=bt; + bool flag; // ־ + do + { + while(p) // ǿ + { + Push(S,p); // ջ + p=p->lchild; // ת + } + r=NULL; // ָձʵ㣬ֵΪ + flag=true; // trueʾջ + while(!StackEmpty(S) && flag) // ջǿҵǰջ + { + GetTop(S,p); // ȡջԪ + if(p->rchild==r) // ǰջԪصҺ + { + cout<data<<' '; // ջԪ + Pop(S,p); // ջ + r=p; // rָ򱻷ʽ + } + else // + { + p=p->rchild; // תջԪҺ + flag=false; // ǰΪջ + } + } + }while(!StackEmpty(S)); // ջǿգѭ + cout< +void CreateBiTree(BTNode
*&bt) +{ + char ch; + cin>>ch; // + if(ch=='#') // # ʾָΪգ˵Ϊ + bt=NULL ; + else + { + bt=new BTNode
; // ڴ + if(!bt) + { + cout<<"ڴʧܣ"<data=ch; + CreateBiTree(bt->lchild); // + CreateBiTree(bt->rchild); // + } + return; +} + + +//㷨5.9 ٶ +template +void DestroyBiTree(BTNode
*&bt) +{ + if(bt) // ǿ + { + DestroyBiTree(bt->lchild); // + DestroyBiTree(bt->rchild); // + delete bt; + } +} + + +//㷨5.10 + +template +BTNode
* Search(BTNode
* bt, DT e) // ֵΪeԪ +{ + BTNode
*p; + if(bt==NULL) // Ϊգ + return NULL; + else if(bt->data==e) // ҵؽָ + return bt; + else // ֵΪe + { + p=Search(bt->lchild,e); // ϲ + if(p!=NULL) // ҵ + return p; // ؽָ + else // δҵ + return Search(bt->rchild,e); // תϲ + } +} + +//㷨5.11 +template +int Depth(BTNode
*bt) +{ + int hl,hr; + if(bt==NULL) // + return 0; // Ϊ0 + else // ǿ + { + + hl=Depth(bt->lchild); // + hr=Depth(bt->lchild); // + if(hl>hr) // + return hl+1; // Ϊ߼1 + else return hr+1; // ,Ϊ߼1 + } +} + + +//㷨5.12 +template +int NodeCount(BTNode
*bt) +{ + if(bt==NULL) // Ϊ0 + return 0; + else // ǿΪĺͼ1 + return NodeCount(bt->lchild)+NodeCount(bt->rchild)+1; +} + +template +void DispBiTree(BTNode
* bt,int level) // ʾ +{ + if(bt) // նʾ + { DispBiTree(bt->rchild,level+1); // ʾ + cout<data; // ʾڵ + DispBiTree(bt->lchild,level+1); // ʾ + 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%0A9)r=ocH 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%0Da?`#4oqFW}W%{8(`p z)EpnH>hlya|3O(|P%IVRpWPKzTGU82dOLZ`uVv4)%54ph>OiNV+3c~++!DR^i&lWU znIRAzReiObTy0===MNL)F~A1PfYACEG1EG&Z|ZPsM!J9ub^?w2@S;fMF{FyzUy`&M zwd+jVa-5ZFdnAQ%>A34Yx_;4K)`39(WOdrw6tT=yHY1xGnzdf;rs$AOTkw;#^p~l~ z9RF`uho1G=1ql&TH>VLEsMBKB8 zb|8@p+>eA%{&E9SxR?h zlhw@S@~tGpM<>sG#OP*CZi1pxND4$6LgpfD)yp&hN#_oTn}OkhhB;8M8+Ys$s=(M! zZQr&MmUBG(dkN+}9ZWDWe4SARO|2enDzT5M_rS8!+<#%T0#l-8RLb0(;9)M?9nK;? zUxWpx%4X^t0gdL~t)cwdbA-w|vP@=WHF3|NRMaB_9}zWj(4YJJ8a_u+4-Pk%uQTvI zTc=H=b}ETin+-ik)SKBivr;s#SzMiO35XIcgN$Xi!;^wqoOr z35zfoisu*^Sw7ZOTFLqBFXESE0#%MMoW)l@r5td-uvQ+|1CN6fipYwfdOz!X-ns_d z%kb7n7HBO=2Fy!uHZj0zBx?=E?EkuNhSp5R#bfAfYG0mgOMy18V#l-&rF_iu!=em) zYY8EcZS#<0=%{~LJLz~D_(7#lDK_nLDvhTyo$RlDRCc*`^_TjNVl{VM%`f8!$MAvI z`=CGiz_+PN%D_m`?gy@3?vut0Qw9`s44_4HT?%tx#2s9Janqg3kuM}x zEkpppMjCW1UjAo@Ax5fkN-yQ5aqJMW#(c>Tc_qjN>Fj@~`CduzqGq|FfVOL-U3@?q zo}gGe(l?op2`~RO-GJZG^o!pD&6yGH`75`szPP{XBR|$hCP*h?fq|EI#>$3xEf4^_ zE){BAMUq}iDjgn|dbDd8An`5YU`G?B?mI%}h1ExzIB@%Wn*WqIIb&$h8|t7H|zAvMXG_4P8e+H7|TKGJBZe=6XS}g{H6H3= z0f*+U-jUpcob1FvsTb>~B%QYYa_I?X>m;^!BG6%00lEH4=v}DJmP7>TO))YA2D)9$ z`_aGVZYT70kX&hUCSX8TgiL~u=|3gO>Zj5!y1^I!2_V8DuxUA+rFQ+A`0Uq&b`B~h zjswNUJQl-Cl@!O4r@{Y@GC809;U}7nH0hhzdj(W1PpDs23WSyvOpWfRg7q^}xOaqW zcr8J3dex?5s7B?~K?!o=-y=u2-8)abls422rh*An#*)l~nXS!0MB4OE@;+t^bswja z89Xg=qv>R6UnUG#RUDzN8Gw3psogeT6_WE>g3tcwe%P&iXS70vSC90-oCGvGXnj^gq)N z<_+ZrBzM29zm*&E2#YSBx+j~Bdo5F@p*NwYu+_-_njVK7C#s~S$3byWR=2dpiXowI z3iVvh31A~SbC z`(vowfZ9UEC1rg%r<;ZHd6`5HSR^E3oSKN$hS&}j#3iBYth!9te=CR2$ZcQw(5y_E zaA0C5B*oB^MUbb(I%aciY{keX=%eLeo%wH@WwDz$gYWE9F5r*>;AK;j_!~hqE5TV0 zWexna;ENRj2T-xoWh1+659?G%N^&-vlrwRk)0~svw!8w$B^WaLfMjYwYF%h-m^FIw zcQO3hcNb2x;*TPI9$5J~;*i+al?U|k{#c(4$o?eg!1q<#h#iKv1|3sYk7wC@6Ff}p zdOK$0PY@!gB*MDiKE%8G+3P4Yt~=jAU6xlhe!bt#a=<^L{o@uX@WsS?9YLF#r(hhM zg<`rZml}U#i0*oNgZ()W8SZ<&UH^6&=s>5r)Q`ASwMSRWG<|HC#OpSg?eNJFbttPn zViA^WsK;wAcf8nf*Cjx0rz*(tP?n+si|F@|!M1BD?mI-tw;s4N5@0f#g`7H;G{O%) zQ**Gat#o){cU20O6L89v$IHODk%H3N9A{?_`7T8S7@-cRzOX1cdlW?0qNjSDDrDEKOWZsH+~O%GLZXxqE% zFdULLZRA=o{6xl|-U+)tlF=W{W(aiYpgAzSi2Y`(6!e#xE=;lI#vGw_|$)+=A z*Ysx39Od4UFI2BYb$=sR78Srv5mK5SkXM*m<{a^B=x-a3^8$6*-cZ%asK7`k`)!3@ zl^ES4MqycHLQ4Cp@r{ylCZ%lm1vqUUi6Jhm!5*`rlL*gU zrIs8j$yhvYb6r3NvW9kFH*Gw)22DS!g^9yw==&duyaQ*timLJL1ciS2J{c1N%4MfYerK>z4?oAVXUk5-XdtSirGjOOK$J<6FCGhSSrzc z>cJ?fmb3Mwqy^H@vb@4TmMtrg@Ym8S zuZ8c)_QQhEFR#7NO4&w*oAKEOsBIB_Q7MkEzfWBS+xB?-l8`&Nx7g2};n%kyOP}<5 zY1r~3%dLK!>+E3SMdj*8VR%(uj1@V;)G=PrzYcO`R)zCXT(PT2D9>s4os$p|9+$Z9 z^>3?qtzJNoD|v&Ls8FFkiE@yE+s6;vR|90LhW)z)4v+u}Ebj}1p3MDRQYs?5Q565( zGw8i&^DhdS*qc87^*&;f6RDd{&X|@HlB~GAt+FS{3m<)Se?(?;E~2=E3k2wB)*3SM zw*Q9|9RtNjTQ&mf>gd;!$F%C6l+QGd%8x}-<1M?HHtrlT%T#9bIEZ3+6iP63aLRc2 z^xBYqG2$FpP0`GTvMt|iS%P=6iw|g4YQu!Pp>gvOk0^=X{36ukzuhBdu1|ng{?6)% zYM|2r41&aI?Rnqy(X5#EO!LZslnR_>jVIXl-gY=5Q;U+Yzsn>Oy|rL*S(o#g-#zWv zc)3xIGdYrcVaCAr7H%v&^TBn5;pU312Smk5h@edrbA*ru?C+u-zGQ;~|AoU~X|kOY zr>HfO$t!s9E!=3)-zWTtgF$b`SXU-Bv@Y#gy6@bz+N~GC_mlHV1a= ze`(qod@B^g7{t0aUC0o&jllp=x?VM`qVDZbVSu9IazqI1s@z5dR(zTIOxs3;%8{uXnr;NS0z4DdO*HZk+6aJaudvxj4*pDE zNLh>T`TB-*aC$r_NnPxI{1ReoezT#!`yDNzp!#B@KG}6pRL6{6$GXTVx&jsj;t;Bd zrL0&)Zc|RHTmsMEpj~*26MYGY6D2^7CC$4#1ulvSic2UYg|1l-kG!kCAzLAdyRhh) z^fT2oG!6{u3zC0)G5Vh=Lj^^zem&^oB!Ngz+aT6nh+m|Nh=W>LTP4wPtYOYt(M=@# z=@c9gUQgABe$aAOuep19&`5-0DHOeXsBwaYKTfqMc~*aq;!;u#Oo|^EycMD zW9gfqd+6_oo~GZgckLWO`RAd{ef3WVJ20SiEh;ktuD9|Qf6*x!6~WI5o!`+EA3;p& zo5nG~TZ#e+&d3j)da&6RVCF4?cEF-?XM0a3lMDn9ICa8?!wVyTVT;~V(K&PSRk#x} zqoIslReKYH^DA!y%wj z{50RR2itoD0;!E;IAn<^Gcq*kKT60)&~@0wuyL~(EpVN#mor`%MT{8v0VWs-M+Rm7 zPj=F5J?ldio~0esqpm`jw{6rbu~fx2@k`Pa28t7f{Y=0S%%u9FU#PcE7uc+-rXNKZ zig1-z&xB0N*>&d0CqvRs=18 z_R;fON+f<|K5nYrv0vjkqZW^*rtPNDFkb~hpK;W{UhfF{W=(^p+m&8;rGH0q<{GD4 zen-Hrn?ls2_v0;;ussY;0A5X0RFIhjPL8XLKAl!_YXM5}El*D?xsW{@z0G&aH?*D) z*=CbwE>u5*VPb!TLd>Z>Nf3Efjl=JOkQwr}TZg>1 zVYr~@k~!xO?wqq7gZ#H=y3=p(VnbmGl=k5qHael*sY>|T#X=L49KG6$G?K(fuNWrh zES94TWhakz-dz!Tv2gd&)rUnyX{67vP|Prri$fXDLLp?;*l%7-RSt&Y)^|&otn=k&~FPNqbky0<~@`&E7mh}xkx z0S9D_c=ILkU>RTnPW)i9CydC8HM+9;KsZfOUzwhM_D@<3R7#r~#2@iFjG$I}-TLDstF z=43Wr6>(_BT_1@`57+sWj}H!DE5=shT=~QhF3F?>UsX-QkzL%Ca#;OcRdWWoEPgF)uJ3dx|)f|(OZ>? zv%J6FQ#yv(V{~&q$czTIAdbUO->^j_wfwwdy0X-NPY{oF@}WOJ&m~=6n2nSl1){l; z+vqwbkzm7JuN;V4QIR_Tfnqn@{q{e>l|nxaj4eie3Zr1Ak=4qPbs+tk9Q#CU2nq=D+o~U8nN=TO&t7nttP|qay_K=Exz3`s^#uZ5T4bcGoe6 z2~3uHAvdp#Lg)=qvX%&9GFuUipHlI5aUOSu6CpNgKE^Fd+=7t?%JQY4nLBJP#i3#; zSH2&`8;<*W&0*%tJJb7}!_l--Z-S!UCf6+rLHh%(&(M}GwX`6qMGqtYyQHi`^3XX+ zzm(G96W_u6ZcGBLJHu1qBqK`_bLvR6e|3;tpIuJ?Ez-U;V{ecjN36jVv18aWG?PRS zM^mrJATL0I1&L*LCn@hpBR2>|-qK?A4gS+K*4BhAYVQ(<*VyW_PSaI?x8K+?VmA2t zlCxs{aeAYN_99mGUiidI-(_-b(rNE+6OaAD`Wp6%BVx)9CbN>F33ouUj%yb4|@ouM7XGVoFQ$SSgDCnJ2hZ@$^M!W{lgaaTz>9p&w776mQaLIP8`DZ9io3b7+&J#!Xp`MP3qV?G$o z@z(KVL`V>|fiYLvajPUC1X4JMfoYsCLucJ1Erw*44H9_4UP5)sz6UlqC5lem

= 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 +struct ThrBTNode +{ + DT data; // + int lflag; // ־ + int rflag; // ұ־ + ThrBTNode *lchild; // ָ + ThrBTNode *rchild; // ָ +}; + + +template // +void CreateBiTree(ThrBTNode
*&bt) +{ // е˳,#Ϊָ־; + char ch; + cin>>ch; // + if(ch=='#') // # ʾָΪգ˵Ϊ + bt=NULL ; + else + { + bt=new ThrBTNode
; // ½ + if(!bt) + { + cout<<"ڴʧܣ"<lflag=0; // + bt->rflag=0; // + bt->data=ch; + CreateBiTree(bt->lchild); // ݹ鴴 + CreateBiTree(bt->rchild); // ݹ鴴 + } + return; +} + +ThrBTNode *pre; + +//㷨5.13 +template +void InThread(ThrBTNode
*&p) +{ + + if(p!=NULL) // ǿ + { + InThread(p->lchild); // + if(p->lchild==NULL) // + { + p->lflag=1; // ǰʶ + p->lchild=pre; // ָǰ + } + if(pre->rchild==NULL) // Һ + { + pre->rflag=1; // úʶ + pre->rchild=p; // Һָ + } + pre=p; // ǰָǰ + InThread(p->rchild); // + } +} + + +template // +ThrBTNode
* CreateInThread(ThrBTNode
*&bt) +{ + ThrBTNode
*root; + root=new ThrBTNode
; // ͷ + root->lflag=0; + root->rflag=1; + root->rchild=bt; + if(bt==NULL) + root->lchild=root; + else + { + root->lchild=bt; + pre=root; + InThread(bt); // + pre->rchild=root; // ѭ + pre->rflag=1; + root->rchild=pre; + } + return root; +} + +//㷨5.15 +template +void InThrBiTree( ThrBTNode
* bt) +{ + ThrBTNode
*p; + p=bt->lchild; // Ӹ㿪ʼ + while(p!=bt) // ǿ + { + while (p->lflag==0) // + p=p->lchild; // һ· + cout<data; // ʽ + while(p->rflag==1 && p->rchild!=bt) // кҷǿ + { + p=p->rchild; // ת + cout<data<<" "; // ʺ̽ + } + p=p->rchild; // ޺ת + } +} + +template // ʾ +void DispBiTree(ThrBTNode
* bt,int level) +{ + if(bt) // նʾ + { DispBiTree(bt->rchild,level+1); // ʾ + cout<data; // ʾڵ + DispBiTree(bt->lchild,level+1); // ʾ + cout< +void DestroyThrBiTree(ThrBTNode
*&bt) +{ + if(bt) + { + DestroyThrBiTree(bt->lchild); + DestroyThrBiTree(bt->rchild); + delete bt; + } +} \ No newline at end of file diff --git a/OrigFiles/树和二叉树/5-2-InThrBiTree/ThrBiTree.cpp b/OrigFiles/树和二叉树/5-2-InThrBiTree/ThrBiTree.cpp new file mode 100644 index 0000000..a53f7d9 --- /dev/null +++ b/OrigFiles/树和二叉树/5-2-InThrBiTree/ThrBiTree.cpp @@ -0,0 +1,76 @@ +#include//cout,cin +#include +#include"InThrBiTree.h" +using namespace std; + + +void dispmenu() +{ // ʾ˵ + cout< *bt; + system("cls"); // + int choice; + do + { + dispmenu(); // ʾ˵ + cout<<"Enter choice(1~7):"; + cin>>choice; + switch(choice) + { + case 1: // + cout<<"ݲο"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

mt(k{?<^~A27hFO%3ETb$;uhht$3iaZw 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 z�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≪mZW@cOgbcdf304Xw&o&!0% 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�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

s3~d(J`<@;}HIv1}lJ5*={Wfb3xZ~mg}Dtq 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

ZQT^tGPB%l%y$$m4|^hvg$uPe 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�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