ode* new_node_ptr = new prime_number_node();
new_node_ptr->prime_number = number;
new_node_ptr->next = NULL;
list_tail->next = new_node_ptr;
//3
}
}
int result = 0;
while(list_head != NULL)
{
result++;
prime_number_node* temp_ptr = list_head;
list_head = list_head->next;
//4
}
return result;
}
1、2、3、4四行代码依次为:break;
cur_node_ptr = cur_node_ptr->next;
list_tail = list_tail->next;
delete temp_ptr;
2、已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。
链表结点的结构类型定义如下:
[cpp]
struct node
{
int elem;
node* next;
};
void difference(node** LA , node* LB)
{
node *pa , *pb , *pre , *q;
pre = NULL;
//1
while(pa)
{
pb = LB;
while( ) //2
pb = pb->next;
if( ) //3
{
if(!pre)
*LA = ; //4
else
= pa->next; //5
q = pa;
pa = pa->next;
free(q);
}
else
{
; //6
pa = pa->next;
}
}
}
1、2、3、4、5、6六行代码依次为
pa = *LA;
pb && pa->elem != pb->elem
pb
pa->next
pre->next
pre = pa;
代码中的指针pa用于指向集合A的元素;pb指向集合B的元素;临时指针q指向需要被删除的元素;pre用于实现删除时结点的链接,与pa保持所指结点的前后继关系。