【发布时间】:2021-08-05 13:34:02
【问题描述】:
我是编程新手,刚刚学习链表,我正在尝试交换列表中的相邻节点。例如:
input 1 2 3 4 5 6
output 2 1 4 3 6 5
我找到了交换数据的解决方案,并尝试将其调整为交换节点,但我无法使其正常运行。有任何想法吗?一旦我启动pairWiseSwap,它似乎只是循环,见第三块。
// Java program to pairwise swap elements of a linked list
class LinkedList {
Node head; // head of list
/* Linked list Node*/
class Node {
int data;
Node next;
Node(int d)
{
data = d;
next = null;
}
}
public void pairWiseSwap()
{
Node temp = head;
Node swap;
/* Traverse only till there are atleast 2 nodes left */
while (temp != null && temp.next != null) {
/*
int k = temp.data;
temp.data = temp.next.data;
temp.next.data = k;
temp = temp.next.next;
*/
// just loops
swap = temp;
temp = temp.next;
temp.next = swap;
temp = temp.next.next;
}
}
/* Utility functions */
/* Inserts a new Node at front of the list. */
public void push(int new_data)
{
/* 1 & 2: Allocate the Node &
Put in the data*/
Node new_node = new Node(new_data);
/* 3. Make next of new Node as head */
new_node.next = head;
/* 4. Move the head to point to new Node */
head = new_node;
}
/* Function to print linked list */
void printList()
{
Node temp = head;
while (temp != null) {
System.out.print(temp.data + " ");
temp = temp.next;
}
System.out.println();
}
/* Driver program to test above functions */
public static void main(String args[])
{
LinkedList llist = new LinkedList();
/* Created Linked List 1->2->3->4->5 */
llist.push(5);
llist.push(4);
llist.push(3);
llist.push(2);
llist.push(1);
System.out.println("Linked List before calling pairWiseSwap() ");
llist.printList();
llist.pairWiseSwap();
System.out.println("Linked List after calling pairWiseSwap() ");
llist.printList();
}
}
【问题讨论】:
标签: java algorithm linked-list swap