现在的位置: 首页 > 综合 > 正文

3.4 从无头单链表中删除节点.cpp

2018年01月19日 ⁄ 综合 ⁄ 共 528字 ⁄ 字号 评论关闭

题目描述: 

假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点)。
请将该节点从单链表中删除。

分析与解答:

若要删除该节点,正常情况下,应该要知道该节点的前面节点的指针,
但是由于单链表中没有头结点,所以无法追溯到该节点前面的那个节点,
设该节点为B,下一个节点为C。那么,首先将B节点的内容替换为C节点的内容,
然后,将C节点删除,这样就达到了我们的目的。
代码如下:

pcur->next = pnext->next;
pcur->data = pnext->date;
delete pnext;

扩展题:

将一个单链表,在只遍历一遍的情况下,将单链表中的元素顺序反转过来。

void reverseList(node* head)    
{    
    node *p=head,*previous=NULL,*next=NULL;  
      
    while(p->next!=NULL)  
    {  
        next=p->next;//保存下一个   
        p->next=previous;//p下一个为他前面的  
        previous=p;  
        p=next;   
    }  
    p->next=previous; 
    while(p!=NULL)    
    {    
        printf("%d  ", p->date);    
        p=p->next;    
    }    
    printf("\n");     
} 

抱歉!评论已关闭.