数据结构算法背诵 一、线性表 1
逆转顺序表中的所有元素 算法思想:第一个元素和最后一个元素对调,第二个元素和倒数第二个元素对调,……,依此类推
void Reverse(int A[], int n) { int i, t; for (i=0; i < n/2; i++) { t = A[i]; A[i] = A[n-i-1]; A[n-i-1] = t; } } 2
删除线性链表中数据域为 item 的所有结点 算法思想:先从链表的第2 个结点开始,从前往后依次判断链表中的所有结点是否满足条件,若某个结点的数据域为 item,则删除该结点
最后再回过头来判断链表中的第1 个结点是否满足条件,若满足则将其删除
void PurgeItem(LinkList &list) { LinkList p, q = list; p = list->next; while (p
= NULL) { if (p->data == item) { q->next = p->next; free(p); p = q->next; } else { q = p; p = p->next; } } if (list->data == item) { q = list; list = list->next; free(q); } } 23
逆转线性链表 void Reverse(LinkList &list) { LinkList p, q, r; p = list; q = NULL; while (p
= NULL) { r = q; q = p; p = p->next; q->next = r; } list = q; } 4
复制线性链表(递归) LinkList Copy(LinkList lista) { LinkList listb; if (lista == N