Status InitList_L(LinkList L){ L = (LinkList) malloc(sizeof(LNode)); L->next = NULL; // free(L); return OK; }
2、清空链表
1 2 3 4
Status ListEmpty(LinkList L) { if (L->next) return OK; elsereturn ERROR; }
3、销毁链表
1 2 3 4 5 6 7 8
voidListDestroy(LinkList L) { LinkList p; while (L != NULL) { p = L; L = L->next; free(p); } }
4、清空链表
1 2 3 4 5 6 7 8 9 10
voidListClean(LinkList L) { LinkList p, q; p = L->next; while (p) { q = p->next; free(p); p = q; } L->next = NULL; }
5、获取链表长度
1 2 3 4 5 6 7 8 9
Status GetListLength(LinkList L) { int i = 0; LinkList p = L->next; while (p) { p = p->next; i++; } return i; }
6、获取链表元素
1 2 3 4 5 6 7 8 9 10 11
Status GetListElem(LinkList L, int i, int *elem) { int temp = 1; LinkList p = L->next; while (p && temp < i) { p = p->next; temp++; } if (!p || temp > i) return ERROR; *elem = p->data; return OK; }
7、获取链表元素位置
1 2 3 4 5 6 7 8 9
intGetListPosition(LinkList L, int elem) { LinkList p = L->next; int temp = 1; while (p && p->data != elem) { p = p->next; temp++; } return temp; }
8、插入链表元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Status InsertList(LinkList L, int i) { LinkList p = L->next; int temp = 1; while (p && temp < i - 1) { p = p->next; temp++; } if (!p || temp > i - 1) return ERROR; LinkList Temp = (LinkList) malloc(sizeof(LNode)); Temp->next = p->next; p->next = Temp;
return OK; }
9、删除链表元素
1 2 3 4 5 6 7 8 9 10 11 12 13
Status DeleteList(LinkList L, int i) { LinkList p = L->next; int temp = 1; while (p && temp < i - 1) { p = p->next; temp++; } if (!p || temp > i - 1) return ERROR; LinkList q = p->next; p->next = q->next; free(q); return OK; }
10、头插法创建链表
1 2 3 4 5 6 7 8 9 10
Status CreateList_H(LinkList L, int i) { InitList_L(L); for (int j = i; j > 0; --j) { LinkList p = (LinkList) malloc(sizeof(LNode)); scanf_s("%d\n", p->data); p->next = L->next; L->next = p; } return OK; }
11、尾插法创建链表
1 2 3 4 5 6 7 8 9 10 11 12
Status CreateList_R(LinkList L, int i) { InitList_L(L); LinkList r = L; for (int j = 0; j < i; ++j) { LinkList p = (LinkList) malloc(sizeof(LNode)); scanf_s("%d\n", p->data); p->next = NULL; r->next = p; r = p; } return OK; }