1.在带头结点的单链表L中,删除所有值为x的节点,并释放空间,假设值为x的节点不唯一,试编写算法实现。
算法思想:(1)首先需要定义三个指针,pre指针指向头节点,p初始化指向L头节点的下一个节点,q作为操作指针。
(2)对单链表进行遍历
(3)遍历过程中对p指针的数据域进行比对
(4)数据域的值与x相等,便要进行删除操作
void del_X(LinkList &L,ElemType){
//定义指针节点
LNode *pre =L;//定义pre指针指向头节点
LNode *p =L->next;//定义p指针指向头结点的下一个节点
Lode *q;//定义操作指针
while(p!=Null){
if(p->data==X){
//删除操作
q=p;
p=p->next;
pre->next=p;
free(q);
}
else{
//没有找到X,继续向下找
pre=p;
p=p->next;
}
}
}
2.将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。
算法思想:(1)定义三个指针i,j,k分别指向顺序表A,B,C中的第一个元素
(2)将A,B中较小的元素依次放入C中
(3)若顺序表A,B较长的还有剩余,依次放入