1、你想用java代码实现还是c代码实现?从你的代码看是c语言
2、第一段代码中的结构体nod是不是应该写成Node?
3、inset函数中,链表L是有变化的,所以要用指针。结点s是不改变的,所以不应该用指针
4、既然s不是用指针,后面的s->next自然也不能这么写了。
import java.io.IOExceptionimport 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
}
}