线性表总结
单链表逆置
void ReverseList(LinkList &L){ //1
LNode* p,*q;//2
p=L->next;//3
L->next=NULL;//4
while(p!=NULL){//5
q=p;//6
p=p->next;//7
q->next=L->next;//8
L->next=q;}//9
}//10
不懂的地方:第4行,L->next=NULL的作用,在第8行中,NULL被赋值给了q->next,而下一行中q的值被赋值给了L->next;
所以,我认为应该是给逆置的链表创建一个头结点。
有序链表的删除
void ListDelete(LinkList &L,ElemType e){ //1
LNode *q=L->next; //2
LNode *p=L; //3
if(q==NULL)//4
return;//5
while(q!=NULL&&q->data!=e){//6
q=q->next;//7
p=p->next;//8
}//9
if(q==NULL){//10
cout<<e<<"找不到!"<<endl;//11
} //12
else {//13
p->next=q->next;//14
free(q);//15
}//16
}//1
不懂的地方:第14行和第15行的代码,当p指向q->next时,q被空了出来,实现了删除功能,但是下一行的free(q)是否是必须的呢?我在pta上没有15行提交也能过。那不释放空间会带来什么影响呢?