int main() { int array[LINK_LENGTH] = { 1, 3, 4, 2, 9, 6, 7, 5, 0, 8 }; LinkList L; int i = 0; NODE *node; printf("Array is: "); while (i < LINK_LENGTH) { printf("%d ", array[i]); i++; } printf("\n"); //0. create printf("Create_List\n"); L = Create_List(array); Print_List(L); //1. find printf("\n"); printf("Find_List\n"); Print_List(L); node = Find_List(L, 3); Print_NODE(node); //2. update printf("\n"); Print_List(L); printf("Update_List\n"); Update_List(L, 3, 23); Print_List(L); //3. insert printf("\n"); Print_List(L); printf("Insert_List\n"); Insert_List(L, 3, 99); Print_List(L); //4. delete printf("\n"); Print_List(L); printf("Delete_List\n"); Delete_List(L, 8); Print_List(L); //5. free printf("\n"); Print_List(L); printf("Free resource!\n"); Free_List(L); Print_List(L); return 0; }
/* * 单链表的删除运算 * L为链表头指针 * K为元素位置 * 成功返回0,失败返回-1. */ int Delete_List(LinkList L, int k) { LinkList p, q; if (k==1) { p = L; } else { p = Find_List(L, k-1); } if (p == NULL) return -1; q = p->link; p->link = q->link; free(q); return (0); }
/* * 单链表的插入运算 * L为链表的头指针, * K为在链表插入的位置 * elem为元素值 */ int Insert_List(LinkList L, int k, int elem) { LinkList p, q; if (k == 1) { p = L; } else { // 查找表中第k-1个元素,原因是要在k-1个位置后插入新元素. p = Find_List(L, k-1); } if (p == NULL) return -1; q = (NODE*)malloc(sizeof(NODE)); q->data = elem; q->link = p->link; p->link = q; return 0; }