From 279d1cba33bdc1de15c86aad4a8366cb66b3473c Mon Sep 17 00:00:00 2001 From: yang5220 <3425991052@qq.com> Date: Wed, 17 May 2017 13:13:50 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "2017-1/ywy/\345\233\276/2017-05-17.png" | Bin 0 -> 32355 bytes "2017-1/ywy/\345\233\276/TU.c" | 284 +++++++++++++++++++++++ 2 files changed, 284 insertions(+) create mode 100644 "2017-1/ywy/\345\233\276/2017-05-17.png" create mode 100644 "2017-1/ywy/\345\233\276/TU.c" diff --git "a/2017-1/ywy/\345\233\276/2017-05-17.png" "b/2017-1/ywy/\345\233\276/2017-05-17.png" new file mode 100644 index 0000000000000000000000000000000000000000..8d64bc75388547d1fc35460c1460127ee84e8067 GIT binary patch literal 32355 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 +#include +#define INFINITY -1 +#define MXAVERTEX_NUM 10//最大顶点个数 +#define VRType int +#define VertexType int +#define InfoType int +#define QElemType int +typedef enum +{ + OK, + ERROR, + OVERFLOW +}Status; +typedef enum +{ + true, + false +}bool; +//-------图的邻接矩阵存储-----------// +typedef struct Arcell +{ + VRType adj;//顶点关系,1或0 + InfoType *info;//弧相关信息的指针 +}Arcell, AdjMatrix[MXAVERTEX_NUM][MXAVERTEX_NUM]; +typedef struct +{ + VertexType vexs[MXAVERTEX_NUM]; //顶点向量 + AdjMatrix arcs; //邻接矩阵 + int vexnum, arcnum; //图的当前顶点和弧数 +}MGraph; +//--------队列---------// +typedef struct QNode +{ + QElemType data; + struct QNode *next; + struct QNode *pre; +}QNode, *QueuePtr; +typedef struct LinkQueue +{ + QueuePtr front; + QueuePtr rear; +}LinkQueue; +/*=========队列的基本操作=========*/ +Status InitQueue(LinkQueue *Q) +{ + Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode)); + if (!Q->front) + { + return ERROR; + } + Q->front->next = Q->rear->next = NULL; + return OK; +} + +Status EnQueue(LinkQueue*Q, QElemType e) +{ + QueuePtr p = (QueuePtr)malloc(sizeof(QNode)); + if (!p) + { + return ERROR; + } + else + { + p->data = e; + p->next = NULL; + p->pre = Q->front; + Q->rear->next = p; + Q->rear = p; + } +} + +Status DeQueue(LinkQueue*Q, QElemType*e) +{ + if (Q->front == Q->rear) + { + return ERROR; + } + Q->front = Q->front->next; + *e = Q->front->data; + return OK; +} + +bool QueueEmpty(LinkQueue*Q) +{ + if (Q->front == Q->rear) + { + return true; + } + else + { + return false; + } +} + +Status DestroyQueue(LinkQueue*Q) +{ + while (Q->front) + { + Q->rear = Q->front->next; + free(Q->front); + Q->front = Q->rear; + } + return OK; +} +/*=========图的基本操作=========*/ + +Status LocateVex(MGraph *G, int v1, int v2) +{ + int i; + int j; + int m = 0; + int n = 0; + for (i = 0; i <= G->vexnum; i++) + { + if (G->vexs[i] == v1) + { + m = i; + break; + } + } + for (j = 0; j <= G->vexnum; j++) + { + if (G->vexs[j] == v2) + { + n = j; + break; + } + } + G->arcs[i][j].adj = 1;//两点之间有连线,弧值为1; + G->arcs[j][i] = G->arcs[i][j]; + return OK; +} + +//构建图 +Status CreateUDN(MGraph *G) +{ + int i; + int j; + //根据用例直接赋值。 + G->vexnum = 9; + G->arcnum = 12; + for (i = 1; i <= G->vexnum; i++) + { + G->vexs[i] = i;//构建顶点向量; + } + for (i = 0; i <= G->vexnum; i++)//初始化邻接矩阵; + { + for (j = 0; j <= G->vexnum; j++) + { + G->arcs[i][j].adj = INFINITY; + G->arcs[i][j].info = NULL; + } + } + //构建邻接矩阵; + LocateVex(G, 1, 2); + LocateVex(G, 1, 3); + LocateVex(G, 1, 4); + LocateVex(G, 1, 7); + LocateVex(G, 2, 3); + LocateVex(G, 4, 5); + LocateVex(G, 4, 6); + LocateVex(G, 5, 6); + LocateVex(G, 6, 8); + LocateVex(G, 7, 8); + LocateVex(G, 7, 9); + LocateVex(G, 8, 9); + + return OK; +} + +//找出第一个邻接点 +int FirstAdjVex(MGraph *G, int u) +{ + int i; + for (i = 1; i <= G->vexnum; i++) + { + if (G->arcs[u][i].adj == 1) + { + return i; + } + } + return -1; +} + +//找出下一个邻接点 +int NextAdjvex(MGraph *G, int u, int w) +{ + int i; + for (i = w + 1; i <= G->vexnum; i++) + { + if (G->arcs[u][i].adj == 1) + { + return i; + } + } + return -1; +} +//广度优先遍历图,求两点a,b间的最短路径; +Status BFSTraverse(MGraph*G, LinkQueue *Q, int a, int b) +{ + + int v; + int u = 0; + int w = 0; + int m = 0; + int n = 0; + bool visited[MXAVERTEX_NUM]; + for (v = 1; v <= G->vexnum; v++) + { + visited[v] = false; //标记数组,标记图中已访问的点 + } + + EnQueue(Q, a); //a先入队列; + while (QueueEmpty(Q) != true) + { + DeQueue(Q, &u); + for (w = FirstAdjVex(G, u); w >= 0; w = NextAdjvex(G, u, w)) + { + if (visited[w] == false)//判断w是否已经访问过 + { + visited[w] = true; + EnQueue(Q, w); + } + if (w == b) + { + break; + } + } + if (w == b) + { + break; + } + } + return OK; +} + +Status print(LinkQueue *Q, int a) +{ + if (Q->rear->data == a) + { + printf("%d->%d\n", a, a); + return OK; + } + + int i = 0; + int j; + int num[MXAVERTEX_NUM] = { 0 }; + while (Q->rear->data != a)//倒序进入数组 + { + num[i] = Q->rear->data; + Q->rear = Q->rear->pre; + i++; + } + printf("%d", a); + for (j = i - 1; j >= 0; j--) + { + printf("->%d", num[j]); + } + + + printf("\n"); + return OK; +} + +int main() +{ + int i, j; + MGraph Graph; + CreateUDN(&Graph); + for (i = 1; i <= Graph.vexnum; i++) + { + for (j = 1; j <= Graph.vexnum; j++) + { + LinkQueue Q; + InitQueue(&Q); + printf("%d<->%d: ", i, j); + BFSTraverse(&Graph, &Q, i, j); + print(&Q, i); + DestroyQueue(&Q); + + } + } +} From 7d2794c660c4ae655c8a06f3cc1f3ae6d595ae5d Mon Sep 17 00:00:00 2001 From: yang5220 <3425991052@qq.com> Date: Wed, 24 May 2017 10:33:06 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=B9=BF=E5=BA=A6=E4=BC=98=E5=85=88?= =?UTF-8?q?=E9=81=8D=E5=8E=86=E5=9B=BE=EF=BC=8C=E8=BE=93=E5=87=BA=E6=9C=80?= =?UTF-8?q?=E7=9F=AD=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "2017-1/ywy/\345\233\276/2017-05-17.png" | Bin 32355 -> 0 bytes "2017-1/ywy/\345\233\276/2017-05-24.png" | Bin 0 -> 33980 bytes "2017-1/ywy/\345\233\276/TU.c" | 65 +++++++++++++---------- 3 files changed, 37 insertions(+), 28 deletions(-) delete mode 100644 "2017-1/ywy/\345\233\276/2017-05-17.png" create mode 100644 "2017-1/ywy/\345\233\276/2017-05-24.png" diff --git "a/2017-1/ywy/\345\233\276/2017-05-17.png" "b/2017-1/ywy/\345\233\276/2017-05-17.png" deleted file mode 100644 index 8d64bc75388547d1fc35460c1460127ee84e8067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32355 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 TIqT3O@SeVo$r;S4^H=^CD)qOr literal 0 HcmV?d00001 diff --git "a/2017-1/ywy/\345\233\276/TU.c" "b/2017-1/ywy/\345\233\276/TU.c" index 6449bad5..c4145190 100644 --- "a/2017-1/ywy/\345\233\276/TU.c" +++ "b/2017-1/ywy/\345\233\276/TU.c" @@ -67,6 +67,7 @@ Status EnQueue(LinkQueue*Q, QElemType e) p->pre = Q->front; Q->rear->next = p; Q->rear = p; + return OK; } } @@ -105,33 +106,41 @@ Status DestroyQueue(LinkQueue*Q) } /*=========图的基本操作=========*/ -Status LocateVex(MGraph *G, int v1, int v2) +int LocateVex(MGraph *G, int v1)//返回顶点v1的位置 { int i; - int j; - int m = 0; - int n = 0; + int n = -1; + for (i = 0; i <= G->vexnum; i++) { if (G->vexs[i] == v1) { - m = i; + n= i; break; } } - for (j = 0; j <= G->vexnum; j++) + if (n != -1) { - if (G->vexs[j] == v2) - { - n = j; - break; - } + return n; + } + return 0; +} +Status InsertArc(MGraph *G, int v1, int v2)//v1、v2间添加弧 +{ + int i, j; + i = LocateVex(G, v1); + j= LocateVex(G, v2); + if (i != 0 && j != 0) + { + G->arcs[i][j].adj = 1;//两点之间有连线,弧值为1; + G->arcs[j][i] = G->arcs[i][j]; + return OK; + } + else + { + return ERROR; } - G->arcs[i][j].adj = 1;//两点之间有连线,弧值为1; - G->arcs[j][i] = G->arcs[i][j]; - return OK; } - //构建图 Status CreateUDN(MGraph *G) { @@ -153,18 +162,18 @@ Status CreateUDN(MGraph *G) } } //构建邻接矩阵; - LocateVex(G, 1, 2); - LocateVex(G, 1, 3); - LocateVex(G, 1, 4); - LocateVex(G, 1, 7); - LocateVex(G, 2, 3); - LocateVex(G, 4, 5); - LocateVex(G, 4, 6); - LocateVex(G, 5, 6); - LocateVex(G, 6, 8); - LocateVex(G, 7, 8); - LocateVex(G, 7, 9); - LocateVex(G, 8, 9); + InsertArc(G, 1, 2); + InsertArc(G, 1, 3); + InsertArc(G, 1, 4); + InsertArc(G, 1, 7); + InsertArc(G, 2, 3); + InsertArc(G, 4, 5); + InsertArc(G, 4, 6); + InsertArc(G, 5, 6); + InsertArc(G, 6, 8); + InsertArc(G, 7, 8); + InsertArc(G, 7, 9); + InsertArc(G, 8, 9); return OK; } @@ -281,4 +290,4 @@ int main() } } -} +} \ No newline at end of file From 59b460850907ce20f529cedd825332802a17e24d Mon Sep 17 00:00:00 2001 From: yang5220 <3425991052@qq.com> Date: Sat, 27 May 2017 09:53:47 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E4=BA=8C=E8=8C=B6?= =?UTF-8?q?=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../00.c" | 262 ++++++++++++++++++ .../BSTOutput.txt" | Bin 0 -> 2603 bytes 2 files changed, 262 insertions(+) create mode 100644 "2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\221/00.c" create mode 100644 "2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\221/BSTOutput.txt" diff --git "a/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\221/00.c" "b/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\221/00.c" new file mode 100644 index 00000000..4617d758 --- /dev/null +++ "b/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\221/00.c" @@ -0,0 +1,262 @@ +#include +#include + +//二叉查找树结点描述 +typedef int KeyType; +typedef int ElemType; +int flag; +typedef struct Node +{ + ElemType data; //关键字 + struct Node * left; //左孩子指针 + struct Node * right; //右孩子指针 + struct Node * parent; //指向父节点指针 +}Node, *PNode; + +//往二叉查找树中插入结点 +//插入的话,可能要改变根结点的地址,所以传的是二级指针 +void inseart(PNode * T, KeyType key) +{ + //初始化插入结点 + PNode p = (PNode)malloc(sizeof(Node)); + p->data = key; + p->left = p->right = p->parent = NULL; + //空树时,直接作为根结点 + if ((*T) == NULL) { + *T = p; + return; + } + //插入到当前结点(*root)的左孩子 + if ((*T)->left == NULL && (*T)->data > key) { + p->parent = (*T); + (*T)->left = p; + return; + } + //插入到当前结点(*root)的右孩子 + if ((*T)->right == NULL && (*T)->data < key) { + p->parent = (*T); + (*T)->right = p; + return; + } + if ((*T)->data > key) + inseart(&(*T)->left, key); + else if ((*T)->data < key) + inseart(&(*T)->right, key); + else + return; +} + +//查找元素,找到返回关键字的结点指针,没找到返回NULL +PNode search(PNode T, KeyType key) +{ + if (T == NULL) + return NULL; + if (key > T->data) //查找右子树 + return search(T->right, key); + else if (key < T->data) //查找左子树 + return search(T->left, key); + else + return T; +} + +//查找最小关键字,空树时返回NULL +PNode searchMin(PNode T) +{ + if (T == NULL) + return NULL; + if (T->left == NULL) + return T; + else //一直往左孩子找,直到没有左孩子的结点 + return searchMin(T->left); +} + +//查找最大关键字,空树时返回NULL +PNode searchMax(PNode T) +{ + if (T == NULL) + return NULL; + if (T->right == NULL) + return T; + else //一直往右孩子找,直到没有右孩子的结点 + return searchMax(T->right); +} + +//查找某个结点的前驱 +PNode searchPredecessor(PNode p) +{ + //空树 + if (p == NULL) + return p; + //有左子树、左子树中最大的那个 + if (p->left) + return searchMax(p->left); + //无左子树,查找某个结点的右子树遍历完了 + else { + if (p->parent == NULL) + return NULL; + //向上寻找前驱 + while (p) { + if (p->parent->right == p) + break; + p = p->parent; + } + return p->parent; + } +} + +//查找某个结点的后继 +PNode searchSuccessor(PNode p) +{ + //空树 + if (p == NULL) + return p; + //有右子树、右子树中最小的那个 + if (p->right) + return searchMin(p->right); + //无右子树,查找某个结点的左子树遍历完了 + else { + if (p->parent == NULL) + return NULL; + //向上寻找后继 + while (p) { + if (p->parent->left == p) + break; + p = p->parent; + } + return p->parent; + } +} + +//根据关键字删除某个结点,删除成功返回1,否则返回0 +//如果把根结点删掉,那么要改变根结点的地址,所以传二级指针 +int deleteNode(PNode* T, KeyType key) +{ + PNode q; + //查找到要删除的结点 + PNode p = search(*T, key); + KeyType temp; //暂存后继结点的值 + //没查到此关键字 + if (!p) + return 0; + //1.被删结点是叶子结点,直接删除 + if (p->left == NULL && p->right == NULL) { + //只有一个元素,删完之后变成一颗空树 + if (p->parent == NULL) { + free(p); + (*T) = NULL; + } + else { + //删除的结点是父节点的左孩子 + if (p->parent->left == p) + p->parent->left = NULL; + else //删除的结点是父节点的右孩子 + p->parent->right = NULL; + free(p); + } + } + + //2.被删结点只有左子树 + else if (p->left && !(p->right)) { + p->left->parent = p->parent; + //如果删除是父结点,要改变父节点指针 + if (p->parent == NULL) + *T = p->left; + //删除的结点是父节点的左孩子 + else if (p->parent->left == p) + p->parent->left = p->left; + else //删除的结点是父节点的右孩子 + p->parent->right = p->left; + free(p); + } + //3.被删结点只有右孩子 + else if (p->right && !(p->left)) { + p->right->parent = p->parent; + //如果删除是父结点,要改变父节点指针 + if (p->parent == NULL) + *T = p->right; + //删除的结点是父节点的左孩子 + else if (p->parent->left == p) + p->parent->left = p->right; + else //删除的结点是父节点的右孩子 + p->parent->right = p->right; + free(p); + } + //4.被删除的结点既有左孩子,又有右孩子 + //该结点的后继结点肯定无左子树(参考上面查找后继结点函数) + //删掉后继结点,后继结点的值代替该结点 + else { + //找到要删除结点的后继 + q = searchSuccessor(p); + temp = q->data; + //删除后继结点 + deleteNode(T, q->data); + p->data= temp; + } + return 1; +} + +//创建一棵二叉查找树 +void create(PNode* T, KeyType *keyArray, int length) +{ + int i; + //逐个结点插入二叉树中 + for (i = 0; idata,pfile); + pre(T->left,pfile); + pre(T->right,pfile); + } + //printf("\n"); +} + + +int main(void) +{ + int i; + char c = '\n'; + FILE*pfile; + pfile = fopen(" BSTOutput.txt","a"); + PNode T = NULL; + KeyType nodeArray[12] = { 8, 10, 14, 3, 1, 6, 4, 7, 5, 19, 22, 30 }; + create(&T, nodeArray, 12); + pre(T,pfile); + fwrite(&c, sizeof(c), 1, pfile); + KeyType searArray[5] = { 13, 8, 5, 20, 6 }; + for (i = 0; i < 5; i++) + { + if (deleteNode(&T, searArray[i]) == 0) + { + inseart(&T, searArray[i]); + } + flag = 0; + //pre(T,pfile); + fwrite(&c, sizeof(c), 1, pfile); + } + pre(T, pfile); + fclose(pfile); + pfile = NULL; + return 0; +} + diff --git "a/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\221/BSTOutput.txt" "b/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\221/BSTOutput.txt" new file mode 100644 index 0000000000000000000000000000000000000000..c20b6e55910c64bdadec9271e49e14b674381b38 GIT binary patch literal 2603 zcmeH}OAde_3`AX+(PQ&d8nsBVrp+ literal 0 HcmV?d00001 From 1a1effaf69020d346786b8a0d01c490af027a2d7 Mon Sep 17 00:00:00 2001 From: yang5220 <3425991052@qq.com> Date: Wed, 14 Jun 2017 13:50:58 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\346\216\222\345\272\217/2017-06-14.png" | Bin 0 -> 41714 bytes "2017-1/ywy/\346\216\222\345\272\217/Sort.c" | 179 ++++++++++++++++++ "2017-1/ywy/\346\216\222\345\272\217/Sort.h" | 27 +++ "2017-1/ywy/\346\216\222\345\272\217/test.c" | 26 +++ 4 files changed, 232 insertions(+) create mode 100644 "2017-1/ywy/\346\216\222\345\272\217/2017-06-14.png" create mode 100644 "2017-1/ywy/\346\216\222\345\272\217/Sort.c" create mode 100644 "2017-1/ywy/\346\216\222\345\272\217/Sort.h" create mode 100644 "2017-1/ywy/\346\216\222\345\272\217/test.c" diff --git "a/2017-1/ywy/\346\216\222\345\272\217/2017-06-14.png" "b/2017-1/ywy/\346\216\222\345\272\217/2017-06-14.png" new file mode 100644 index 0000000000000000000000000000000000000000..ffd77b64b8fe856f392774d88c913e33ec951309 GIT binary patch literal 41714 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 KT-G@yGywpIp$#nn literal 0 HcmV?d00001 diff --git "a/2017-1/ywy/\346\216\222\345\272\217/Sort.c" "b/2017-1/ywy/\346\216\222\345\272\217/Sort.c" new file mode 100644 index 00000000..3e9560de --- /dev/null +++ "b/2017-1/ywy/\346\216\222\345\272\217/Sort.c" @@ -0,0 +1,179 @@ +#include"Sort.h" +void swap(SqList*L, int i, int j) +{ + RedType temp = L->r[i]; + L->r[i] = L->r[j]; + L->r[j] = temp; +} + +void ShellSort(SqList*L) +{ + int i, j; + int count1 = 0, count2 = 0; + int rise = L->length; + do + { + rise = rise / 5 + 1; + for (i = rise + 1; i <= L->length; i++) + { + count1++; + if (LT(L->r[i].key, L->r[i - rise].key)) + { + L->r[0] = L->r[i]; + count2++; + for (j = i - rise; LT(L->r[0].key, L->r[j].key) && j > 0; j = j - rise) + { + count1++; + L->r[j + rise] = L->r[j]; + count2++; + } + count1++; + L->r[j + rise] = L->r[0]; + count2++; + } + } + } while (rise > 1); + printf("希尔排序为: "); + for (i = 2; i <= L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d \n", count1, count2); + printf("\n"); +} +void InsertSort(SqList*L) +{ + int i, j; + int count1 = 0; + int count2 = 0; + for (i = 2; i <= L->length; i++) + { + ++count1; + if (LT(L->r[i].key, L->r[i - 1].key)) + { + L->r[0] = L->r[i]; + count2++; + //L->r[i] = L->r[i - 1]; + for (j = i - 1; LT(L->r[0].key, L->r[j].key); --j) + { + count1++; + count2++; + L->r[j + 1] = L->r[j]; + } + count1++; + L->r[j + 1] = L->r[0]; + count2++; + } + } + printf("插入排序后为:"); + for (i = 2; i<=L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d \n", count1, count2); + printf("\n"); +} +void BubbleSort(SqList*L) +{ + int i, j; + int count1 = 0; + int count2 = 0; + for (i = 1; i < L->length; i++) + { + for (j = i+1; j < L->length; j++) + { + count1++; + if ( LT(L->r[j].key, L->r[i].key)) + { + swap(L,i,j); + count2 += 3; + } + } + } + printf("冒泡排序后为:"); + for (i = 1; ilength; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d \n", count1, count2); + printf("\n"); +} +int Partition(SqList*L, int low, int high,int*count1,int*count2) +{ + int pivotkey; + //L->r[0] = L->r[low]; + pivotkey = L->r[low].key; + while (low < high) + { + while (L->r[high].key >= pivotkey && low < high) + { + (*count1)++; + high--; + } + (*count1)++; + swap(L, low, high); + (*count2) += 3; + while (L->r[low].key <= pivotkey && low < high) + { + (*count1)++; + low++; + } + (*count1)++; + swap(L, low, high); + (*count2) += 3; + } + return low; +} + +void QSort(SqList*L, int low, int high,int*count1,int*count2) +{ + int pivot; + if (low < high) + { + pivot = Partition(L, low, high, count1, count2); + QSort(L, low, pivot - 1, count1, count2); + QSort(L, pivot + 1, high, count1,count2); + } +} +void QuickSort(SqList*L) +{ + int i; + int count1 = 0, count2 = 0; + QSort(L, 1, L->length, &count1, &count2); + printf("快速排序后为:"); + for (i = 2; i<=L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d \n", count1, count2); +} +void SelectSort(SqList*L) +{ + int i, j,min; + int count1 = 0; + int count2 = 0; + for (i = 1; i < L->length; i++) + { + min = i; + for (j = i + 1; j <= L->length; j++) + { + count1++; + if (LT(L->r[j].key, L->r[min].key)) + { + min = j; + } + } + if (i != min) + { + swap(L, i, min); + count2 += 3; + } + } + printf("\n简单选择排序为:"); + for (i = 2; i<=L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d \n", count1, count2); + printf("\n"); +} diff --git "a/2017-1/ywy/\346\216\222\345\272\217/Sort.h" "b/2017-1/ywy/\346\216\222\345\272\217/Sort.h" new file mode 100644 index 00000000..e2b9681d --- /dev/null +++ "b/2017-1/ywy/\346\216\222\345\272\217/Sort.h" @@ -0,0 +1,27 @@ +#pragma once +#include +#include +#include +typedef int KeyType; +typedef int InfoType; +#define maxsize 20 +#define len 10 +#define LT(a,b) ((a)<(b)) +typedef struct +{ + KeyType key; + InfoType otherinfo; +}RedType; +typedef struct +{ + RedType r[maxsize+1];//r[0]作为暂存空间 + int length; +}SqList; +void swap(SqList*L, int i, int j); +void ShellSort(SqList*L); +void InsertSort(SqList*L); +void BubbleSort(SqList*L); +void QuickSort(SqList*L); +void QSort(SqList*L, int low, int high, int*count1, int*count2); +int Partition(SqList*L, int low, int high,int*count1,int*count2); +void SelectSort(SqList*L); \ No newline at end of file diff --git "a/2017-1/ywy/\346\216\222\345\272\217/test.c" "b/2017-1/ywy/\346\216\222\345\272\217/test.c" new file mode 100644 index 00000000..574fec1e --- /dev/null +++ "b/2017-1/ywy/\346\216\222\345\272\217/test.c" @@ -0,0 +1,26 @@ +#include"Sort.h" +//#include"Sort.c" +int main() +{ + SqList L, L1, L2, L3, L4; + L.length = len; + int i = 0; + + for (i = 1; i <= len; i++) + { + L.r[i].key = 10 - i;; + } + printf("\n原顺序为:"); + for (i = 1; i Date: Sun, 18 Jun 2017 18:55:11 +0800 Subject: [PATCH 5/7] =?UTF-8?q?Hash=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ywy/Hash\350\241\250/2017-06-18 (2).png" | Bin 0 -> 35473 bytes "2017-1/ywy/Hash\350\241\250/Hash.c" | 167 ++++++++++++++++++ "2017-1/ywy/Hash\350\241\250/Hash.h" | 46 +++++ "2017-1/ywy/Hash\350\241\250/test.c" | 30 ++++ 4 files changed, 243 insertions(+) create mode 100644 "2017-1/ywy/Hash\350\241\250/2017-06-18 (2).png" create mode 100644 "2017-1/ywy/Hash\350\241\250/Hash.c" create mode 100644 "2017-1/ywy/Hash\350\241\250/Hash.h" create mode 100644 "2017-1/ywy/Hash\350\241\250/test.c" diff --git "a/2017-1/ywy/Hash\350\241\250/2017-06-18 (2).png" "b/2017-1/ywy/Hash\350\241\250/2017-06-18 (2).png" new file mode 100644 index 0000000000000000000000000000000000000000..2342fec4f7ddae7e44f3248309f1757591aebb48 GIT binary patch literal 35473 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 F{{gN6mgN8d literal 0 HcmV?d00001 diff --git "a/2017-1/ywy/Hash\350\241\250/Hash.c" "b/2017-1/ywy/Hash\350\241\250/Hash.c" new file mode 100644 index 00000000..6910aeeb --- /dev/null +++ "b/2017-1/ywy/Hash\350\241\250/Hash.c" @@ -0,0 +1,167 @@ +#include"Hash.h" +bool SuS(int n) +{ + int i; + if(n==2) + { + return TRUE; + } + for (i = 2; i < n; i++) + { + if(n%i==0) + { + return FALSE; + } + } + return TRUE; +} +Status InitHashTable(HashTable*H,int size) +{ + int i; + ElemType temp; + H->count = 0; + H->maxsize = size; + H->elem = (ElemType*)malloc(sizeof(ElemType)*size); + if (!(H->elem)) + { + return error; + } + for (i = 0; i < size; i++) + { + H->elem[i].key = UNKEY; + H->elem[i].val = UNVAL; + } + srand((unsigned)time(NULL)); + for (i = 0; H->count%d\n", H.elem[*add].key, H.elem[*add].val); + (*add)++; + (*count)++; + } + else + break; + } + + if (Equal(key, H.elem[*add].key)) + { + return SUCCESS; + } + else + { + return UNSUCCESS; + } +} +Status InsertHashTable(HashTable*H, ElemType e) +{ + int add, count; + if (SearchHashTable(*H, e.key, &add, &count) == SUCCESS) + { + return DUPLICATE; + } + else { + if (add == H->maxsize || count > H->maxsize / 2) + { + ReHash(H); + } + H->elem[add] = e; + H->count++; + printf("插入[%d]:%d->%d", add, H->elem[add].key, H->elem[add].val); + printf("碰撞次数:%d\n", count); + return ok; + } + +} +Status ReHash(HashTable *H) +{ + int i, n; + HashTable temp; + if (Empty(*H)) + { + return error; + } + n = 2 * H->maxsize; + while (!SuS(n)) + { + n++; + } + temp.maxsize = n; + temp.count = H->count; + temp.elem = (ElemType *)malloc(sizeof(ElemType)*n); + for (i = 0; i < n; i++) + { + temp.elem[i].key = UNKEY; + temp.elem[i].val = UNVAL; + } + + for (i = 0; i < H->maxsize; i++) { + temp.elem[i].key = H->elem[i].key; + temp.elem[i].val = H->elem[i].val; + } + + H->maxsize = temp.maxsize; + + H->count = temp.count; + + H->elem = (ElemType *)malloc(sizeof(ElemType)*n); + + for (i = 0; i < n; i++) + { + H->elem[i].key = temp.elem[i].key; + H->elem[i].val = temp.elem[i].val; + } + + free(temp.elem); + return ok; +} +Status PrintHash(HashTable H) +{ + int i; + if(Empty(H)) + { + return error; + } + printf("print hash\n"); + for (i = 0; i < H.maxsize; i++) + { + printf("[%d]: %d->%d\n", i, H.elem[i].key, H.elem[i].val); + } + return ok; +} + + + + + diff --git "a/2017-1/ywy/Hash\350\241\250/Hash.h" "b/2017-1/ywy/Hash\350\241\250/Hash.h" new file mode 100644 index 00000000..973542ca --- /dev/null +++ "b/2017-1/ywy/Hash\350\241\250/Hash.h" @@ -0,0 +1,46 @@ +#pragma once +#include +#include +#include +#include +#define SUCCESS 1 +#define UNSUCCESS 0 +#define DUPLICATE -1 +#define UNKEY -1 +#define UNVAL 0 +//#define HASHSIZE 30 +typedef int KeyType; +typedef int ValueType; +typedef struct _ElemType +{ + KeyType key;//关键字 + ValueType val;//值 +#ifdef CHAINED_HASH + struct _ElemType*next; +#endif +}ElemType; +typedef struct +{ + ElemType*elem;//存储哈希表元素 + int count; + int maxsize; +}HashTable; +typedef enum +{ + ok, + error +}Status; + +typedef enum +{ + FALSE, + TRUE +}bool; +Status PrintHash(HashTable H); +Status InitHashTable(HashTable*H,int size); +Status InsertHashTable(HashTable*H, ElemType e); +bool Empty(HashTable H); +bool Equal(KeyType a, KeyType b); +bool SuS(int n); +int SearchHashTable(HashTable H, KeyType key, int*add, int*count); +Status ReHash(HashTable *H); \ No newline at end of file diff --git "a/2017-1/ywy/Hash\350\241\250/test.c" "b/2017-1/ywy/Hash\350\241\250/test.c" new file mode 100644 index 00000000..c11d59eb --- /dev/null +++ "b/2017-1/ywy/Hash\350\241\250/test.c" @@ -0,0 +1,30 @@ +#include"Hash.h" +int main() + +{ + int size; + int i; + KeyType key; + HashTable H; + size = 11;// + srand((unsigned)time(NULL)); + + InitHashTable(&H, size); + PrintHash(H); + int add = 0; + int count = 0; + for (i = 0; i < H.count; i++) + { + key = rand() % size; + if(SearchHashTable(H,key,&add,&count)==SUCCESS) + { + printf("find %d ", key); + printf("address %d: \n", add); + } + else + { + printf("not find %d: \n", key); + } + } + return 0; +} \ No newline at end of file From b1bf0f3c7163d29ce407bbd436f2c942de7df394 Mon Sep 17 00:00:00 2001 From: yang5220 <3425991052@qq.com> Date: Sun, 18 Jun 2017 19:12:53 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E7=BA=A0=E6=AD=A3=E7=89=88=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2017-06-18 (3).png" | Bin 0 -> 43835 bytes .../Sort.c" | 179 ++++++++++++++++++ .../Sort.h" | 27 +++ .../test.c" | 51 +++++ 4 files changed, 257 insertions(+) create mode 100644 "2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/2017-06-18 (3).png" create mode 100644 "2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.c" create mode 100644 "2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.h" create mode 100644 "2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/test.c" diff --git "a/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/2017-06-18 (3).png" "b/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/2017-06-18 (3).png" new file mode 100644 index 0000000000000000000000000000000000000000..a42e035dae6d3d21b32148e92ca9a922b19e4c89 GIT binary patch literal 43835 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

7e2Gr!eknFQx--GVawaA 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 literal 0 HcmV?d00001 diff --git "a/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.c" "b/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.c" new file mode 100644 index 00000000..319bcc09 --- /dev/null +++ "b/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.c" @@ -0,0 +1,179 @@ +#include"Sort.h" +void swap(SqList*L, int i, int j) +{ + RedType temp = L->r[i]; + L->r[i] = L->r[j]; + L->r[j] = temp; +} + +void ShellSort(SqList*L) +{ + int i, j; + int count1 = 0, count2 = 0; + int rise = L->length; + do + { + rise = rise / 5 + 1; + for (i = rise + 1; i <= L->length; i++) + { + count1++; + if (LT(L->r[i].key, L->r[i - rise].key)) + { + L->r[0] = L->r[i]; + count2++; + for (j = i - rise; LT(L->r[0].key, L->r[j].key) && j > 0; j = j - rise) + { + count1++; + L->r[j + rise] = L->r[j]; + count2++; + } + count1++; + L->r[j + rise] = L->r[0]; + count2++; + } + } + } while (rise > 1); + printf("希尔排序为: "); + for (i = 1; i <= L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d 二者之和: %d\n", count1, count2, count1 + count2); + printf("\n"); +} +void InsertSort(SqList*L) +{ + int i, j; + int count1 = 0; + int count2 = 0; + for (i = 2; i <= L->length; i++) + { + ++count1; + if (LT(L->r[i].key, L->r[i - 1].key)) + { + L->r[0] = L->r[i]; + count2++; + //L->r[i] = L->r[i - 1]; + for (j = i - 1; LT(L->r[0].key, L->r[j].key); --j) + { + count1++; + count2++; + L->r[j + 1] = L->r[j]; + } + count1++; + L->r[j + 1] = L->r[0]; + count2++; + } + } + printf("插入排序后为:"); + for (i = 1; i <= L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d 二者之和: %d\n", count1, count2, count1 + count2); + printf("\n"); +} +void BubbleSort(SqList*L) +{ + int i, j; + int count1 = 0; + int count2 = 0; + for (i = 1; i < L->length; i++) + { + for (j = i + 1; j < L->length; j++) + { + count1++; + if (LT(L->r[j].key, L->r[i].key)) + { + swap(L, i, j); + count2 += 3; + } + } + } + printf("冒泡排序后为:"); + for (i = 1; ilength; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d 二者之和: %d\n", count1, count2, count1 + count2); + printf("\n"); +} +int Partition(SqList*L, int low, int high, int*count1, int*count2) +{ + int pivotkey; + //L->r[0] = L->r[low]; + pivotkey = L->r[low].key; + while (low < high) + { + while (L->r[high].key >= pivotkey && low < high) + { + (*count1)++; + high--; + } + (*count1)++; + swap(L, low, high); + (*count2) += 3; + while (L->r[low].key <= pivotkey && low < high) + { + (*count1)++; + low++; + } + (*count1)++; + swap(L, low, high); + (*count2) += 3; + } + return low; +} + +void QSort(SqList*L, int low, int high, int*count1, int*count2) +{ + int pivot; + if (low < high) + { + pivot = Partition(L, low, high, count1, count2); + QSort(L, low, pivot - 1, count1, count2); + QSort(L, pivot + 1, high, count1, count2); + } +} +void QuickSort(SqList*L) +{ + int i; + int count1 = 0, count2 = 0; + QSort(L, 1, L->length, &count1, &count2); + printf("快速排序后为:"); + for (i = 1; i <= L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d 二者之和: %d\n", count1, count2, count1 + count2); +} +void SelectSort(SqList*L) +{ + int i, j, min; + int count1 = 0; + int count2 = 0; + for (i = 1; i < L->length; i++) + { + min = i; + for (j = i + 1; j <= L->length; j++) + { + count1++; + if (LT(L->r[j].key, L->r[min].key)) + { + min = j; + } + } + if (i != min) + { + swap(L, i, min); + count2 += 3; + } + } + printf("\n简单选择排序为:"); + for (i = 1; i <= L->length; i++) + { + printf("%d ", L->r[i].key); + } + printf("\n比较次数:%d 交换次数: %d 二者之和: %d\n", count1, count2, count1 + count2); + printf("\n"); +} diff --git "a/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.h" "b/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.h" new file mode 100644 index 00000000..b36753ec --- /dev/null +++ "b/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/Sort.h" @@ -0,0 +1,27 @@ +#pragma once +#include +#include +#include +typedef int KeyType; +typedef int InfoType; +#define maxsize 20 +#define len 10 +#define LT(a,b) ((a)<(b)) +typedef struct +{ + KeyType key; + InfoType otherinfo; +}RedType; +typedef struct +{ + RedType r[maxsize + 1]; + int length; +}SqList; +void swap(SqList*L, int i, int j); +void ShellSort(SqList*L); +void InsertSort(SqList*L); +void BubbleSort(SqList*L); +void QuickSort(SqList*L); +void QSort(SqList*L, int low, int high, int*count1, int*count2); +int Partition(SqList*L, int low, int high, int*count1, int*count2); +void SelectSort(SqList*L); diff --git "a/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/test.c" "b/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/test.c" new file mode 100644 index 00000000..a59eb1d7 --- /dev/null +++ "b/2017-1/ywy/\347\272\240\346\255\243\347\211\210\346\216\222\345\272\217/test.c" @@ -0,0 +1,51 @@ +锘#include"Sort.h" + +//#include"Sort.c" + +int main() + +{ + + SqList L, L1, L2, L3, L4; + + L.length = len; + + int i = 0; + + srand((unsigned)time(NULL)); + + for (i = 1; i <= len; i++) + + { + + L.r[i].key =rand()%15; + + } + + printf("\n鍘熷簭锛"); + + for (i = 1; i Date: Sun, 18 Jun 2017 20:02:07 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=89=88=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E4=BA=8C=E5=8F=89=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BSTOutput.txt" | Bin 0 -> 110 bytes .../test.c" | 521 ++++++++++++++++++ 2 files changed, 521 insertions(+) create mode 100644 "2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\2212/BSTOutput.txt" create mode 100644 "2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\2212/test.c" diff --git "a/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\2212/BSTOutput.txt" "b/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\2212/BSTOutput.txt" new file mode 100644 index 0000000000000000000000000000000000000000..c523c090bfab38848fe86d56f9c73b5812f659af GIT binary patch literal 110 zcmcD}QD86zVnZM{17Z^(HU(mHAT~4r5g-vmOCVun1SE_Nc)1V|tOBMTqy?-POn^n< L+KfO(85;lq^uP_g literal 0 HcmV?d00001 diff --git "a/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\2212/test.c" "b/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\2212/test.c" new file mode 100644 index 00000000..120aaf0d --- /dev/null +++ "b/2017-1/ywy/\346\216\222\345\272\217\344\272\214\345\217\211\346\240\2212/test.c" @@ -0,0 +1,521 @@ +锘#include + +#include + + + +//浜屽弶鏌ユ壘鏍戠粨鐐规弿杩 + +typedef int KeyType; + +typedef int ElemType; + +int flag; + +typedef struct Node + +{ + + ElemType data; //鍏抽敭瀛 + + struct Node * left; //宸﹀瀛愭寚閽 + + struct Node * right; //鍙冲瀛愭寚閽 + + struct Node * parent; //鎸囧悜鐖惰妭鐐规寚閽 + +}Node, *PNode; + + + +//寰浜屽弶鏌ユ壘鏍戜腑鎻掑叆缁撶偣 + +//鎻掑叆鐨勮瘽锛屽彲鑳借鏀瑰彉鏍圭粨鐐圭殑鍦板潃锛屾墍浠ヤ紶鐨勬槸浜岀骇鎸囬拡 + +void inseart(PNode * T, KeyType key) + +{ + + //鍒濆鍖栨彃鍏ョ粨鐐 + + PNode p = (PNode)malloc(sizeof(Node)); + + p->data = key; + + p->left = p->right = p->parent = NULL; + + //绌烘爲鏃讹紝鐩存帴浣滀负鏍圭粨鐐 + + if ((*T) == NULL) { + + *T = p; + + return; + + } + + //鎻掑叆鍒板綋鍓嶇粨鐐癸紙*root锛夌殑宸﹀瀛 + + if ((*T)->left == NULL && (*T)->data > key) { + + p->parent = (*T); + + (*T)->left = p; + + return; + + } + + //鎻掑叆鍒板綋鍓嶇粨鐐癸紙*root锛夌殑鍙冲瀛 + + if ((*T)->right == NULL && (*T)->data < key) { + + p->parent = (*T); + + (*T)->right = p; + + return; + + } + + if ((*T)->data > key) + + inseart(&(*T)->left, key); + + else if ((*T)->data < key) + + inseart(&(*T)->right, key); + + else + + return; + +} + + + +//鏌ユ壘鍏冪礌,鎵惧埌杩斿洖鍏抽敭瀛楃殑缁撶偣鎸囬拡锛屾病鎵惧埌杩斿洖NULL + +PNode search(PNode T, KeyType key) + +{ + + if (T == NULL) + + return NULL; + + if (key > T->data) //鏌ユ壘鍙冲瓙鏍 + + return search(T->right, key); + + else if (key < T->data) //鏌ユ壘宸﹀瓙鏍 + + return search(T->left, key); + + else + + return T; + +} + + + +//鏌ユ壘鏈灏忓叧閿瓧,绌烘爲鏃惰繑鍥濶ULL + +PNode searchMin(PNode T) + +{ + + if (T == NULL) + + return NULL; + + if (T->left == NULL) + + return T; + + else //涓鐩村線宸﹀瀛愭壘锛岀洿鍒版病鏈夊乏瀛╁瓙鐨勭粨鐐 + + return searchMin(T->left); + +} + + + +//鏌ユ壘鏈澶у叧閿瓧,绌烘爲鏃惰繑鍥濶ULL + +PNode searchMax(PNode T) + +{ + + if (T == NULL) + + return NULL; + + if (T->right == NULL) + + return T; + + else //涓鐩村線鍙冲瀛愭壘锛岀洿鍒版病鏈夊彸瀛╁瓙鐨勭粨鐐 + + return searchMax(T->right); + +} + + + +//鏌ユ壘鏌愪釜缁撶偣鐨勫墠椹 + +PNode searchPredecessor(PNode p) + +{ + + //绌烘爲 + + if (p == NULL) + + return p; + + //鏈夊乏瀛愭爲銆佸乏瀛愭爲涓渶澶х殑閭d釜 + + if (p->left) + + return searchMax(p->left); + + //鏃犲乏瀛愭爲,鏌ユ壘鏌愪釜缁撶偣鐨勫彸瀛愭爲閬嶅巻瀹屼簡 + + else { + + if (p->parent == NULL) + + return NULL; + + //鍚戜笂瀵绘壘鍓嶉┍ + + while (p) { + + if (p->parent->right == p) + + break; + + p = p->parent; + + } + + return p->parent; + + } + +} + + + +//鏌ユ壘鏌愪釜缁撶偣鐨勫悗缁 + +PNode searchSuccessor(PNode p) + +{ + + //绌烘爲 + + if (p == NULL) + + return p; + + //鏈夊彸瀛愭爲銆佸彸瀛愭爲涓渶灏忕殑閭d釜 + + if (p->right) + + return searchMin(p->right); + + //鏃犲彸瀛愭爲,鏌ユ壘鏌愪釜缁撶偣鐨勫乏瀛愭爲閬嶅巻瀹屼簡 + + else { + + if (p->parent == NULL) + + return NULL; + + //鍚戜笂瀵绘壘鍚庣户 + + while (p) { + + if (p->parent->left == p) + + break; + + p = p->parent; + + } + + return p->parent; + + } + +} + + + +//鏍规嵁鍏抽敭瀛楀垹闄ゆ煇涓粨鐐,鍒犻櫎鎴愬姛杩斿洖1,鍚﹀垯杩斿洖0 + +//濡傛灉鎶婃牴缁撶偣鍒犳帀锛岄偅涔堣鏀瑰彉鏍圭粨鐐圭殑鍦板潃锛屾墍浠ヤ紶浜岀骇鎸囬拡 + +int deleteNode(PNode* T, KeyType key) + +{ + + PNode q; + + //鏌ユ壘鍒拌鍒犻櫎鐨勭粨鐐 + + PNode p = search(*T, key); + + KeyType temp; //鏆傚瓨鍚庣户缁撶偣鐨勫 + + //娌℃煡鍒版鍏抽敭瀛 + + if (!p) + + return 0; + + //1.琚垹缁撶偣鏄彾瀛愮粨鐐癸紝鐩存帴鍒犻櫎 + + if (p->left == NULL && p->right == NULL) { + + //鍙湁涓涓厓绱狅紝鍒犲畬涔嬪悗鍙樻垚涓棰楃┖鏍 + + if (p->parent == NULL) { + + free(p); + + (*T) = NULL; + + } + + else { + + //鍒犻櫎鐨勭粨鐐规槸鐖惰妭鐐圭殑宸﹀瀛 + + if (p->parent->left == p) + + p->parent->left = NULL; + + else //鍒犻櫎鐨勭粨鐐规槸鐖惰妭鐐圭殑鍙冲瀛 + + p->parent->right = NULL; + + free(p); + + } + + } + + + + //2.琚垹缁撶偣鍙湁宸﹀瓙鏍 + + else if (p->left && !(p->right)) { + + p->left->parent = p->parent; + + //濡傛灉鍒犻櫎鏄埗缁撶偣锛岃鏀瑰彉鐖惰妭鐐规寚閽 + + if (p->parent == NULL) + + *T = p->left; + + //鍒犻櫎鐨勭粨鐐规槸鐖惰妭鐐圭殑宸﹀瀛 + + else if (p->parent->left == p) + + p->parent->left = p->left; + + else //鍒犻櫎鐨勭粨鐐规槸鐖惰妭鐐圭殑鍙冲瀛 + + p->parent->right = p->left; + + free(p); + + } + + //3.琚垹缁撶偣鍙湁鍙冲瀛 + + else if (p->right && !(p->left)) { + + p->right->parent = p->parent; + + //濡傛灉鍒犻櫎鏄埗缁撶偣锛岃鏀瑰彉鐖惰妭鐐规寚閽 + + if (p->parent == NULL) + + *T = p->right; + + //鍒犻櫎鐨勭粨鐐规槸鐖惰妭鐐圭殑宸﹀瀛 + + else if (p->parent->left == p) + + p->parent->left = p->right; + + else //鍒犻櫎鐨勭粨鐐规槸鐖惰妭鐐圭殑鍙冲瀛 + + p->parent->right = p->right; + + free(p); + + } + + //4.琚垹闄ょ殑缁撶偣鏃㈡湁宸﹀瀛愶紝鍙堟湁鍙冲瀛 + + //璇ョ粨鐐圭殑鍚庣户缁撶偣鑲畾鏃犲乏瀛愭爲(鍙傝冧笂闈㈡煡鎵惧悗缁х粨鐐瑰嚱鏁) + + //鍒犳帀鍚庣户缁撶偣,鍚庣户缁撶偣鐨勫间唬鏇胯缁撶偣 + + else { + + //鎵惧埌瑕佸垹闄ょ粨鐐圭殑鍚庣户 + + q = searchSuccessor(p); + + temp = q->data; + + //鍒犻櫎鍚庣户缁撶偣 + + deleteNode(T, q->data); + + p->data = temp; + + } + + return 1; + +} + + + +//鍒涘缓涓妫典簩鍙夋煡鎵炬爲 + +void create(PNode* T, KeyType *keyArray, int length) + +{ + + int i; + + //閫愪釜缁撶偣鎻掑叆浜屽弶鏍戜腑 + + for (i = 0; idata, pfile); + + pre(T->left, pfile); + + pre(T->right, pfile); + + } + + //printf("\n"); + +} + + + + + +int main(void) + +{ + + int i; + + char c = '\n'; + + FILE*pfile; + + pfile = fopen(" BSTOutput.txt", "a"); + + PNode T = NULL; + + KeyType nodeArray[12] = { 8, 10, 14, 3, 1, 6, 4, 7, 5, 19, 22, 30 }; + + create(&T, nodeArray, 12); + + pre(T, pfile); + + fwrite(&c, sizeof(c), 1, pfile); + + KeyType searArray[5] = { 13, 8, 5, 20, 6 }; + + for (i = 0; i < 5; i++) + + { + + if (deleteNode(&T, searArray[i]) == 0) + + { + + inseart(&T, searArray[i]); + + } + + flag = 0; + + //pre(T,pfile); + + fwrite(&c, sizeof(c), 1, pfile); + + } + + pre(T, pfile); + + fclose(pfile); + + pfile = NULL; + + return 0; + +} \ No newline at end of file