标签:lag 等于 turn alter serve algo end 使用 ==
#include <iostream> #include <algorithm> using namespace std; #define SIZE 6 struct comp { int data; int cur; }; void reserveArr(comp *array); int initArr(comp *array); void Display(comp *array, int); int mallocArr(comp *array); void insertArr(comp*, int, int, int); void deleteArr(comp*, int, int); int findArr(comp*, int, int); void alterArr(comp*, int, int, int); int main() { comp array[SIZE]; int body = initArr(array); cout << "静态链表为:" << endl; Display(array, body); cout << "插入数据:" << endl; insertArr(array, body, 3, 4); Display(array, body); cout << "删除节点之后的链表:" << endl; deleteArr(array, body, 3); Display(array, body); cout << "寻找节点:" << endl; int pos = findArr(array, body, 2); if (pos != -1) { cout << "节点位置:" << pos << endl; } cout << "更改数据:" << endl; alterArr(array, body, 2, 10); Display(array, body); system("PAUSE"); return 0; } void reserveArr(comp *array) { for (int i = 0; i < SIZE; ++i) {//游标指向下一节点 array[i].cur = i + 1; } array[SIZE - 1].cur = 0;//最后一个节点游标为0 } int mallocArr(comp *array) { int i = array[0].cur; if (array[0].cur) { array[0].cur = array[i].cur; } return i; } int initArr(comp* array) { reserveArr(array); int body = mallocArr(array); int tempbody = body; for (int i = 1; i < 4; i++) { array[tempbody].data = i; if (i + 1 < 4) { int j = mallocArr(array); tempbody = j; } } array[tempbody].cur = 0; return body; } void Display(comp *array, int body) { int tempbody = body; while (array[tempbody].cur) { cout << array[tempbody].data << "," << array[tempbody].cur << endl; tempbody = array[tempbody].cur; } cout << array[tempbody].data << "," << array[tempbody].cur << endl; } void insertArr(comp* array, int body, int pos, int elem) { int tempbody = body;//临时变量,准备遍历 for (int i = 1; i < pos; ++i) {//循环到准备插入位置的前一节点位置 tempbody = array[tempbody].cur; } int value = mallocArr(array);//申请一个节点,返回新节点位置 array[value].data = elem;//将新元素插入新节点 array[value].cur = array[tempbody].cur;//新节点游标等于上一节点游标 array[tempbody].cur = value;//上一节点游标等于新节点位置 } void free(comp* array, int k) { array[k].cur = array[0].cur;//将删除节点游标为备用链表表头游标(指向第一个未使用节点) array[0].cur = k;//备用..指向删除节点 } void deleteArr(comp* array, int body, int pos) { int tempbody = body; while (tempbody != pos) {//遍历找到需要删除的节点位置,error point tempbody = array[tempbody].cur; if (tempbody == 0) { cerr << "Not Find Delete Point1!!!" << endl; return; } } int temppos = tempbody; tempbody = body; while (array[tempbody].cur != temppos) {//循环找到要删除节点的前一位置 tempbody = array[tempbody].cur; if (tempbody == 0) { cerr << "Not Find Delete Point2!!!" << endl; return; } } array[tempbody].cur = array[temppos].cur;//前一节点游标变为将删除节点游标 free(array, temppos); } int findArr(comp* array, int body, int data) { int tempbody = body; while (array[tempbody].data != data) { tempbody = array[tempbody].cur; if (tempbody == 0) { cerr << "Not Find!!!" << endl; return -1; } } return tempbody; } void alterArr(comp* array, int body, int oldelem, int newelem) { int tempbody = body; int flag = findArr(array, body, oldelem); if (flag == -1) { cerr << "No Data!!!" << endl; return; } array[flag].data = newelem; }
标签:lag 等于 turn alter serve algo end 使用 ==
原文地址:https://www.cnblogs.com/Mayfly-nymph/p/10155260.html