zoukankan      html  css  js  c++  java
  • 查找链表中倒数第k个结点

    题目:输入一个单向链表,输出该链表中倒数第k个结点。如果该链表的头节点包含其链表的长度则很好做。本题假设没有,思路是设两个指针,两个指针相差k,当前面一个指针遍历到末尾时,后一个指针指向的就是所要求得的节点。

    //输出链表中倒数第k个结点
    #include<iostream>
    using namespace std;
    struct node{
    	int data;
    	node *next;
    };
    void create(node *&list){   //初始化,简单的将链表内容变为1到10
    	node *pre;
    	node *cur;
    	pre=new node;
    	pre->data=1;
    	pre->next=NULL;
    	list=pre;
    	for(int i=2;i<=10;i++){
    		cur=new node;
    		cur->data=i;
    		cur->next=NULL;
    		pre->next=cur;
    		pre=cur;
    	}
    }
    void print(node *list){
    	while(list){
    		cout<<list->data<<" ";
    		list=list->next;
    	}
    	cout<<endl;
    }
    void find(node *list,int k){
    	node *first=list;         //前面一个指针
    	int cnt=0;
    	while(cnt++<k){             //向前移动k位
    		if(!first) {cout<<"error"<<endl;return;}
    		else first=first->next;
    	}
    	node *index=list;              //后一个指针,此时first和index正好相差k位
    	while(first){                   //当first遍历到末尾时index必是所要求的值
    		first=first->next;
    		index=index->next;
    	}
    	cout<<index->data<<endl;
    	return;
    }
    int main(void){
    	node *list;
    	create(list);
    	print(list);
    	find(list,10);
    	system("pause");
    	return 0;
    }
    

  • 相关阅读:
    项目不能imports同名命名空间
    表格分页
    关于Web Post信息的编码
    JJHIS构想
    asp.net客户端传参的小结
    注销类业务的处理
    枚举类型的一些用法总结
    MO功能使能情况
    在内嵌页面得到某个内嵌页面所在的frame
    不同包里的全局变量定义方式及系统配置处理
  • 原文地址:https://www.cnblogs.com/aLittleBitCool/p/1949957.html
Copyright © 2011-2022 走看看