java数据结构单链表

Python020

java数据结构单链表,第1张

你的问题很好理解。但是你的代码问题严重。

1、你想用java代码实现还是c代码实现?从你的代码看是c语言

2、第一段代码中的结构体nod是不是应该写成Node?

3、inset函数中,链表L是有变化的,所以要用指针。结点s是不改变的,所以不应该用指针

4、既然s不是用指针,后面的s->next自然也不能这么写了。

import java.io.IOException

import java.util.Scanner

public class LinkList {

private static Scanner san = new Scanner(System.in)

public static void main(String[] args) throws IOException {

List list = new List()

for (int i = 1i <= 10i++) {

System.out.print("请输入第" + i + "个数: ")

list.add(san.nextInt())

list.print()

}

System.out.println("输入的数据如下: ")

list.print()

}

}

class node {

int data

node next = this// 指向自己

}

class List {

private node header = new node()

// 循环链表的尾部添加数据

public node add(int data) {

node current = new node()

node temp = header

while (temp.next != header)

temp = temp.next

current.data = data

current.next = temp.next

temp.next = current

return current

}

// 查询某个数字的位置 如果不在 返回-1;

public int search(int data) {

node temp = header

int n = 0

while (temp.next != header) {

temp = temp.next

n++

if (temp.data == data)

break

}

if (temp.data == data)

return n

else

return -1

}

// 打印出整个链表

public void print() {

node temp = header

while (temp.next != header) {

temp = temp.next

System.out.print(temp.data + " ")

}

System.out.println()

}

// 插入数据

public node Insert(int pos, int data) {

node temp = header

node current = new node()

for (int i = 0i <pos - 1i++) {

if (temp.next != header) {

temp = temp.next

} else

return null

}

current.data = data

if (temp.next != header) {

current.next = temp.next

}

temp.next = current

return current

}

// 删除某个数据

public node del(int data) {

node temp = header

node oldtemp = null

node current = null

while (temp.next != header) {

oldtemp = temp

temp = temp.next

if (temp.data == data) {

current = temp

break

}

}

if (current == header)

return null

oldtemp.next = current.next

return current

}

}