鏈表相關操作二(兩種遍歷方式)

1、頭結點不存放Value

void reverseLinkList(PNODE head)
{
	NODE *p,*q,*r;
	p = head->pNext;
	if(p==NULL || p->pNext==NULL)
	{
		return;//說明沒有元素或只有一個元素
	}
	q = p->pNext;
	while(q)
	{
		r = q->pNext;
		p->pNext = r;//將q刪除

		q->pNext = head->pNext;//將q插入到第一個結點
		head->pNext = q;

		q = r;
	}
}

2、頭結點存放Value

Node * reverse(Node * head) {  
    if(head == NULL)  
        return head;  
  
    Node *p = head->next;  
    if(p == NULL)  
        return head;  
  
    Node *q = p->next;  
    if(q == NULL) {  
        head->next = NULL;  
        p->next = head;  
        return p;  
    }  
  
    head->next = NULL;  
    while(q) {  
        p->next = head;  
        head = p;  
        p = q;  
        q = q->next;  
    }  
    p->next = head;  
    return p;  
}  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章