设为首页 加入收藏

TOP

字符串动态数组的C实现方法(三)
2015-07-16 12:04:03 来源: 作者: 【 】 浏览:127
Tags:字符串 动态 实现 方法
onst char * PosPointer) { pStringNode pres = NOT_FIND; if (arr == NULL || target == NULL || PosPointer == NULL) return INPUT_ERROR; pres = StringSearchFirst(arr, PosPointer); return StringInsertOneByPointer(arr, target, pres); } // id 从 0 开始计算 int StringInsertByID(StringArr * arr, const char * target, int id) { pStringNode pres = NOT_FIND; if (arr == NULL || target == NULL) return INPUT_ERROR; if (id < 0) id = 0; if (id > arr->length) id = arr->length; if (arr->length == 0) return StringAddOne(arr, target); pres = arr->pHead + id; return StringInsertOneByPointer(arr, target, pres); } // ======================= modify ======================== int StringModify(StringArr * arr, const char * target, const char * source) { pStringNode pres = NOT_FIND; pStringNode tmp = NOT_FIND; if (arr == NULL || target == NULL || source == NULL) return INPUT_ERROR; pres = StringSearchFirst(arr, target); if (pres == NULL) return (int)NOT_FIND; tmp = (pStringNode)malloc(sizeof(char)* (strlen(source) + 1)); if (tmp == NULL) return MALLOC_ERROR; free(pres->pStr); pres->pStr = tmp; pres->length = strlen(source) + 1; strcpy(pres->pStr, source); return SUCCESS; } // ======================= sort ========================= int StringSort(StringArr * arr, int seq) { StringNode tmp; if (arr == NULL) return INPUT_ERROR; if (arr->pHead == NULL || arr->length == 1) return SUCCESS; #define MAX2MIN 1 #define MIN2MAX 0 seq = (seq > 0) ? MAX2MIN : MIN2MAX; if (seq == MIN2MAX) { // 使用冒泡法排序 for (int i = 0; i != arr->length - 1; i++) { for (int j = 0; j != arr->length - 1 - i; j++) { if (strcmp(arr->pHead[j].pStr, arr->pHead[j+1].pStr) > 0) { tmp = arr->pHead[j + 1]; arr->pHead[j + 1] = arr->pHead[j]; arr->pHead[j] = tmp; } } } } else { for (int i = 0; i != arr->length - 1; i++) { for (int j = 0; j != arr->length - 1 - i; j++) { if (strcmp(arr->pHead[j].pStr, arr->pHead[j + 1].pStr) < 0) { tmp = arr->pHead[j + 1]; arr->pHead[j + 1] = arr->pHead[j]; arr->pHead[j] = tmp; } } } } return SUCCESS; } // ====================== create ======================== pStringArr StringCreate() { pStringArr parr = (pStringArr)malloc(sizeof(StringArr)); if (parr == NULL) return parr; parr->capacity = 0; parr->length = 0; parr->pHead = NULL; return parr; } // ===================== destroy ======================= void StringDestroy(pStringArr parr) { if (parr == NULL) return; while (parr->length != 0) { if (parr->pHead[parr->length - 1].pStr != NULL) { free(parr->pHead[parr->length - 1].pStr); parr->pHead[parr->length - 1].length = 0; parr->length--; } } if (parr->pHead != NULL) free(parr->pHead); free(parr); }
首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言----多维数组 下一篇C语言----内存区划分

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: