1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
| #include"LinkList.h"
struct LinkNode* Init_LinkList() { struct LinkNode* header = malloc(sizeof(struct LinkNode)); header->val = - 1; header->next = NULL;
struct LinkNode* pRear = header; int data = -1; while (true) { printf("输入构成的数据:\n"); scanf("%d", &data); if (data == -1) {
break; } struct LinkNode* newnode = malloc(sizeof(struct LinkNode)); newnode->val = data; newnode->next = NULL; pRear->next = newnode; pRear = newnode; } return header; }
void InsertByValue_LinkList(struct LinkNode* header, int oldval, int newval) { if (header == NULL) { return; }
struct LinkNode* pPrev=header->next; struct LinkNode* pCurrent = pPrev->next; while (pCurrent->val != oldval) { pPrev = pCurrent; pCurrent = pCurrent->next; if (pCurrent == NULL) { break; } } #if 0
if (pCurrent == NULL) { return; } #endif struct LinkNode* newnode = malloc(sizeof(struct LinkNode)); newnode->val = newval; newnode->next = pCurrent; pPrev->next = newnode; return header;
}
void RemoveByValue_LinkList(struct LinkNode* header, int delValue) { if (header == NULL) { return; }
struct LinkNode* pPrev = header; struct LinkNode* Find = pPrev->next; while (Find->val != delValue) { pPrev = pPrev->next; Find = Find->next; if (Find == NULL) { return; } } pPrev->next = Find->next; free(Find); Find = NULL; return header; }
void Foreach_LinkList(struct LinkNode* header) { if (header == NULL) { return; }
struct LinkNode* pCurrent = header->next; while(pCurrent) { printf("%d\n", pCurrent->val); pCurrent = pCurrent->next; }
}
void Destroy_LinkList(struct LinkNode* header) { if (header == NULL) { return; }
struct LinkNode* pCurrent = header; struct LinkNode* pNext = pCurrent; while (pCurrent!=NULL) { pNext = pCurrent->next; printf("%d结点被销毁\n",pCurrent->val); free(pCurrent); pCurrent = pNext; }
}
void Clear_LinkList(struct LinkNode* header) { if (header == NULL) { return; }
struct LinkNode* pCurrent = header->next;
while (pCurrent != NULL) { struct LinkNode* pNext = pCurrent->next; free(pCurrent); pCurrent = pNext; }
header->next = NULL;
return header; }
|