用c语言的伪代码假设以带头结点的单链表表示有序表,单链表的类型定义如下: typedef struct node{ DataType data; struct node *next }LinkNode, *LinkList; 编写算法,将有序表A和有序表B归并为新的有序表C。
时间: 2023-04-01 19:01:26 浏览: 107
算法如下:
1. 初始化指针pA和pB分别指向有序表A和B的第一个结点,指针pC指向新的有序表C的头结点。
2. 如果pA和pB都不为空,则比较pA和pB结点中的数据大小,将较小的结点插入到新的有序表C中,并将指针pC指向新插入的结点。
3. 如果pA为空,则将pB剩余的结点插入到新的有序表C中。
4. 如果pB为空,则将pA剩余的结点插入到新的有序表C中。
5. 返回新的有序表C的头结点。
伪代码如下:
LinkList MergeList(LinkList A, LinkList B)
{
LinkList C = (LinkList)malloc(sizeof(LinkNode)); // 新的有序表C的头结点
LinkList pA = A->next, pB = B->next, pC = C; // 初始化指针
while(pA && pB)
{
if(pA->data <= pB->data)
{
pC->next = pA;
pA = pA->next;
}
else
{
pC->next = pB;
pB = pB->next;
}
pC = pC->next;
}
if(pA)
pC->next = pA;
else
pC->next = pB;
return C;
}
阅读全文