연쇄표 면접문제(一)
public class MySingleLinkedlmpl {
class Node{
public int getData() {
return data;
}
private int data;
public Node next;
public Node(int data){
this.data=data;
this.next=null;
}
}//
private Node head;
public MySingleLinkedlmpl(){
this.head=null;
}
public Node reverseList(){
Node reverseHead=null;//
Node prev=null;//cur
Node cur=this.head;//cur
while (cur!=null){
Node curNext=cur.next;
if(curNext==null){
reverseHead=cur;
}
cur.next=prev;
prev=cur;
cur=curNext;
}
return reverseHead;
}
}
2. 체인 시계를 정하고 체인 시계가 링에 들어가기 시작한 첫 번째 노드를 되돌려준다.만약 체인 시계에 고리가 없다면,null로 돌아갑니다.
public class MySingleLinkedlmpl {
class Node{
public int getData() {
return data;
}
private int data;
public Node next;
public Node(int data){
this.data=data;
this.next=null;
}
}//
private Node head;
public MySingleLinkedlmpl(){
this.head=null;
}
public Node detectCycle(){
Node fast=this.head;
Node slow=this.head;
while (fast!=null && fast.next.next!=null){
fast=fast.next.next;
slow=slow.next;
if(fast==slow ){
break;
}
}
//
if(fast==null || fast.next.next==null){
return null;
}
// slow , fast
slow=this.head;
while (fast!=slow){
fast=fast.next;
slow=slow.next;
}
return slow;
}
}
3. 체인 시계에 고리가 있는지 판단한다.
public class MySingleLinkedlmpl {
class Node{
public int getData() {
return data;
}
private int data;
public Node next;
public Node(int data){
this.data=data;
this.next=null;
}
}//
private Node head;
public MySingleLinkedlmpl(){
this.head=null;
}
public boolean hasCycle(){
Node fast=this.head;
Node slow=this.head;
while (fast!=null && fast.next!=null){
fast=fast.next.next;
slow=slow.next;
if(fast==slow){
return true;
}
}
return false;
}
}
4. 연쇄표의 회문 구조.
public class MySingleLinkedlmpl {
class Node{
public int getData() {
return data;
}
private int data;
public Node next;
public Node(int data){
this.data=data;
this.next=null;
}
}//
private Node head;
public MySingleLinkedlmpl(){
this.head=null;
}
public boolean chkPalindrome(){
Node fast=this.head;
Node slow=this.head;
while (fast!=null&&fast.next!=null){
fast=fast.next.next;
slow=slow.next;
}
//slow
Node p=slow.next;
Node pNext=p.next;
while (p!=null){
p.next=slow;
slow=p;
p=p.next;
if(p!=null){
pNext=p.next;
}
}
//
while (this.head!=slow){
if(this.head.data!=slow.data){
return false;
}
if(this.head.next==slow){
return true;
}
head=head.next;
slow=slow.next;
}
return true;
}
}
5. 정렬된 체인 테이블에 중복된 결점이 존재하므로 이 체인 테이블에 중복된 결점을 삭제하십시오. 중복된 결점은 보류하지 않고 체인 헤드 바늘로 되돌아갑니다.
public class MySingleLinkedlmpl {
class Node{
public int getData() {
return data;
}
private int data;
public Node next;
public Node(int data){
this.data=data;
this.next=null;
}
}//
private Node head;
public MySingleLinkedlmpl(){
this.head=null;
}
public Node deleteDuplication(){
Node node=new Node(-1);
Node cur=this.head;
Node tmpHead=node;
while (cur!=null){
if(cur.next!=null&&cur.data==cur.next.data){
while (cur.next!=null&&cur.data==cur.next.data){
cur=cur.next;
}
cur=cur.next;
//cur
tmpHead.next=cur;
}else{
// ,
tmpHead.next=cur;
tmpHead=cur;
cur=cur.next;
}
}
return node.next;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.