查找单链表倒数第K个节点和以及逆置单链表

#pragma once
#include 
   
   
    
    
using namespace std;

struct ListNode{
	int value;
	ListNode* next;
};

class List
{
	typedef ListNode node;
public:
	List()
		:root(NULL)
	{}
	~List()
	{
		node* f = root;
		while(root)
		{
			f = root->next;
			delete root;
			root = f;
		}
		root = NULL;
	}
	void push(int _value)
	{
		if (NULL == root)
		{
			node* tmp = new node();
			tmp->value = _value;
			tmp->next = NULL;
			root = tmp;
		}
		else
		{
			node* tmp = new node();
			node* temp = root;
			while (temp->next)
			{
				temp = temp->next;
			}
			temp->next = tmp;
			tmp->value = _value;
			tmp->next = NULL;
		}
	}

	void ReverseL()
	{
		node* first = root;
		node* second = root->next;
		node* temp = NULL;
		while (NULL != second)
		{
			first->next = temp;
			temp = first;
			first = second;
			second = second->next;
		}
		first->next = temp;

		root = first;
	}

	node* FindLastK(int k)
	{
		if (k > Lsize())
		{
			cout<<"超出范围"<
    
    
     
     next;
			k--;
		}

		while (NULL != p2)
		{
			p1 = p1->next;
			p2 = p2->next;
		}

		return p1;
	}
	int Lsize()
	{
		int size = 0;
		node* t = root;
		while (t)
		{
			size++;
			t = t->next;
		}
		return size;
	}
	void PrintList()
	{
		node* t = root;
		while (t)
		{
			cout<
     
     
      
      value<<"->";
			t = t->next;
		}
		cout<<"NULL";
	}
private:
	node* root;
};
     
     
    
    
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值