线性表总结

时间:2019-03-25
本文章向大家介绍线性表总结,主要包括线性表总结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

单链表逆置

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行提交也能过。那不释放空间会带来什么影响呢?