데이터 구조 - 자바 구현 싱글 체인 시트
5674 단어 데이터 구조
//
class Node {
Node next = null;
int data;
public Node(int data) {
this.data = data ;
}
}
2. 자바 단일 체인 시트 의 증가, 삭제, 정렬 실현
import java.util.Hashtable;
public class MyLinkedList {
Node head = null;//
/**
* @param d:
*/
public void addNode(int d) {
Node newNode = new Node(d);
if(head==null) {
head = newNode;
return;
}
Node tmp = head;
while(tmp.next != null) {
tmp = tmp.next;
}
//add node to end
tmp.next = newNode;
}
/**
* @param index: index
* @return true, false
*/
public Boolean deleteNode(int index) {
//
if(index<1 || index>length()) {
return false;
}
if(index==1) {
head = head.next;
return true;
}
int i=2;
Node preNode = head;
Node curNode = preNode.next;
while(curNode!=null) {
if(i == index) {
preNode.next = curNode.next;
return true;
}
preNode = curNode;
curNode = curNode.next;
i++;
}
return true;
}
/**
* @return
*/
public int length() {
int length = 0;
Node tmp = head;
while(tmp != null) {
length ++;
tmp = tmp.next;
}
return length;
}
/**
* @return
*/
public Node orderList() {
Node nextNode= null;
int temp = 0;
Node curNode = head;
while(curNode.next != null) {
nextNode = curNode.next;
while(nextNode != null) {
if(curNode.data > nextNode.data) {
temp = curNode.data;
curNode.data = nextNode.data;
nextNode.data = temp;
}
nextNode = nextNode.next;
}
curNode = curNode.next;
}
return head;
}
/** data
*
*/
public void printList() {
Node temp = head;
while( temp != null) {
System.out.println(temp.data);
temp = temp.next;
}
}
}
3. 싱글 체인 시트 의 마지막 k 번 째 요 소 를 찾 아 라.
/**
* @param k: k
*/
public Node findElem(Node head,int k) {
if(k<1) {
return null;
}
Node p1 = head;
Node p2 = head;
for(int i=0;i
4. 싱글 체인 시트 의 중간 지점 찾기
//
public Node searchMid(Node head) {
Node p = this.head;
Node q = this.head;
while(p!=null && p.next!=null && p.next.next!=null) {
p=p.next.next;
q=q.next;
}
return q;
}
5. 끝 에서 끝까지 싱글 체인 시트 출력
//
public void reverse(Node head) {
Node pReverseHead = head;
Node pNode = head;
Node pPre = null;
while(pNode!=null) {
Node pNext = pNode.next;
if(pNext == null) {
pReverseHead = pNode;// , next null
}
pNode.next = pPre;
pPre = pNode;
pNode = pNext;
}
this.head = pReverseHead;
}
//
public void printListReverse(Node pListHead) {
if(pListHead != null) {
printListReverse(pListHead.next);
System.out.println(pListHead.data);
}
}
6. 헤드 포인터 모 르 는 상태 에서 지정 한 노드 삭제
//
public boolean deleteNode(Node n) {
// , next null
if(n == null || n.next == null) {
return false;
}
//
//
int temp =n.data;
n.data = n.next.data;
n.next.data = temp;
//
n.next = n.next.next;
return true;
}
7. 중복 데이터 삭제
/**
*
*/
// , ,
public void deleteDuplecate1(Node head) {
Hashtable table = new Hashtable();
Node temp = head;
Node pre = null;
while(temp != null) {
if(table.containsKey(temp.data)) {
pre.next = temp.next;
}else {
table.put(temp.data, 1);//
pre = temp;
}
temp = temp.next;
}
}
// ,
public void deleteDuplecate2(Node head) {
Node p = head;
while(p != null) {
Node q = p;
while(q.next != null) {
if(p.data == q.next.data) {
q.next = q.next.next;
}else {
q = q.next;
}
p = p.next;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.