單鏈表OJ面試題(重點)

2021-09-26 06:24:50 字數 1736 閱讀 8176

public void removeallkey(int key) else 

}if(this.head.data==key)

}

public node reverselist()

cur.next = prev;

prev = cur;

cur = curnext;

}return reversehead;

}

public node middlenode()else 

}if(heada!=null)

if(headb!=null)

return newhead.next;

}

public node partition(int x) else 

}else else

}cur = curnext;

}if(beforestart == null)

beforeend.next = laststart; // 拼接單鏈表

return beforestart;

}

public node delectduplication()

cur = cur.next;

tmphead.next = cur;

} else

}return node.next;

}

public boolean chkpalindrme()

//slow指向中間節點

node p = slow.next;

node pnext = p.next;

while (p!=null)

}//後半部分已經逆置

while (this.head != slow)

if(this.head.next==slow)

head = head.next;

slow = slow.next;

}return true;

}

public  node getintersectionnode( node heada, node headb)

int lenb = 0;

while (ps!=null)

pl = heada; //起初假設a鍊錶長

ps = headb;

int len = lena-lenb;

if(len<0)

//最長的單鏈表是pl,並且差值是乙個正數

for(int i = 0;i//pl和ps在同一起跑線上

while (pl!=ps && pl!=null&&ps!=null)

if(pl == ps && pl!=null && ps!=null)

return null;

}

public boolean hascycle()

}return false;

}

public node detectcycle()

}if(fast==null||fast.next==null)

slow = this.head;

while (fast!=slow)

return slow;

}

面試題 單鏈表反轉

問題 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。一 非遞迴演算法 假設有鍊錶a b c d e f g。在反轉鍊錶過程中的某一階段,其鍊錶指標指向為 a b c d e f g。也就是說在結點d之前的所有結點都已經反轉,而結點d後面的結點e開始的所有結點都沒有反轉。這樣...

單鏈表的面試題

自定義標頭檔案部分 void deletenottail pnode pos 刪除乙個無頭單鏈表的非尾節點 void insertnothead pnode phead,pnode pos,datatype data 在無頭單鏈表的乙個非頭節點前插入乙個節點 void josephcircle pn...

單鏈表 (面試題)

關於單鏈表的基本操作,之前已經總結過了,那些掌握之後算是了解了單鏈表是什麼?不過現在面試的題中,肯定不會只讓你回答單鏈表的基礎操作,總是會改變一些東西,或是擴充套件一下。下面就是一些關於單鏈表的擴充套件內容 include include include pragma warning disable...