设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性
先建立一个待插入的结点,然后依次与与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点。算法如下:
void inorderList (LinkList *&L, ElemType x) {
LinkList *s, *p, *q;
s = (LinkList *)malloc(sizeof(LinkList)); // 建立一个待插入的结点
s->data = x; s->next = NULL;
if (L == NULL || x<L->data) // 若单链表为空或x小于第一个结点的data域
{
s->next = L; // 把*s结点插入到头结点之后
L = s;
}else {
q = L; // 寻找插入位置,p指向待比较的结点,q指向p的前驱结点
p = q->nest;
while (p != NULL && x>p->data) { // 若x大于p所指结点的data域值
q = p;
p = p->next;
}
s->next = p; // 将s结点插入到*q和*p之间
q->next = s;
}
}