C++算法 链表专题

第一题:https://www.nowcoder.com/practice/0cff324157a24a7a8de3da7934458e34?tpId=98&tqId=32912&tPage=5&rp=5&ru=/ta/2019test&qru=/ta/2019test/question-ranking

找出单向链表中的一个节点,该节点到尾指针的距离为K。链表的倒数第0个结点为链表的尾指针。要求时间复杂度为O(n)。
链表结点定义如下:
struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
}
链表节点的值初始化为1,2,3,4,5,6,7。

输入描述:

该节点到尾指针的距离K

输出描述:

返回该单向链表的倒数第K个节点,输出节点的值
#include
#include
#include
#include
#include
#include 
#include
#include
using namespace std;

struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};

int main(){
	ListNode *head=new ListNode, *p;
	p=head;
	int a[7]={1,2,3,4,5,6,7};
	int k;
	cin>>k;
	for(int i=0;i<7;i++){
		ListNode *temp=new ListNode;
		temp->m_pNext=NULL;
		temp->m_nKey=a[i];
		p->m_pNext=temp;
		p=temp;
	}
	ListNode *pre;
	pre=head;
	p=head;
	for(int i=1;im_nKey<m_pNext==NULL){
			cout<<"NULL";
			return 0;
		}
		p=p->m_pNext;
	}
	
	while(p->m_pNext!=NULL) {
		p=p->m_pNext;
		pre=pre->m_pNext;
	}
	cout<m_nKey;
	return 0;
} 

 

你可能感兴趣的:(算法,C++)