使用单链表实现逆置操作

代码:

typedef struct node{
	int data;
	struct node* next;
}listNode;

listNode* reverseList(listNode* head){
	listNode* p;
	listNode* q;
	
	if((head->next)||(head->next->next)){
		return head;
	}
	
	p = head->next;
	q = p->next;
	p->next = NULL;
	
	while(q){
		p = q;
		q = q->next;
		p->next = head->next;
		head->next = p;
	}
	
	return head;
}

思路:

1 该单链表为带头结点的单链表
2 使用头插法来进行逆序
3 如果该单链表本来就 只有一个头结点 或者 只有一个头结点加上一个结点
4 那么就直接返回head就可以,不需要进行逆置
5 否则,就需要进行逆置
6 第一步需要将原单链表分成两个单链表
7 第一个单链表是头结点加上第一个结点
8 第二个单链表是第二个结点一直到最后一个结点
9 然后每一次把第二个单链表的结点使用头插法插入第一个单链表中
10 最后返回的head为逆置的单链表

你可能感兴趣的:(#,数据结构题目,数据结构)