数据结构随笔

单链表逆置

 代码1

 1 void ReverseList(LinkList &L)
 2 {
 3 LNode *p;
 4     LNode *q;
 5     p=L->next;
 6     L->next=NULL;
 7     while(p!=NULL)
 8     {
 9         q=p->next;
10         p->next=L->next;
11         L->next=p;
12         p=q;
13     }
14 }

不懂的地方

 第9到第12行是如何完成逆置的,除了这种写法还有没有其他写法能实现相同功能?

2 有序链表删除

 代码2

 1 void ListDelete(LinkList &L,ElemType e)
 2 {
 3     LinkList q=new LNode;
 4     LinkList p;
 5     q=L;
 6     p=L->next;
 7     while(p)
 8     {
 9         if(p->data==e)
10         {
11             q->next=p->next;
12             delete p;
13             return ;
14         }
15         p=p->next;
16         q=q->next;
17     }
18     
19     q=L;
20     if(q->next==NULL)
21     {
22         return;
23     }
24     else
25     cout<<e<<"找不到!"<<endl;    
26     
27 }

在7到17行的循环后,q和q-next会不会指向同一个节点了

posted @ 2019-03-25 20:15  YaphetsW  阅读(130)  评论(0)    收藏  举报