单链表小程序可以使用不同的编程语言实现,以下是使用Java和C语言分别实现单链表的示例代码:
Java实现
```java
public class LinkedList {
public static class Node {
int data;
Node next;
Node(int data) {
this.data = data;
this.next = null;
}
}
public static class List {
Node head;
public List() {
head = null;
}
// 在链表头部插入节点
public void insertAtHead(int data) {
Node newNode = new Node(data);
newNode.next = head;
head = newNode;
}
// 在链表尾部插入节点
public void insertAtTail(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
} else {
Node temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = newNode;
}
}
// 删除指定位置的节点
public void deleteAtPosition(int position) {
if (head == null) return;
if (position == 0) {
head = head.next;
return;
}
Node temp = head;
for (int i = 0; i < position - 1 && temp != null; i++) {
temp = temp.next;
}
if (temp == null || temp.next == null) return;
Node toDelete = temp.next;
temp.next = temp.next.next;
}
// 查找指定值的节点位置
public int find(int value) {
Node temp = head;
int position = 0;
while (temp != null) {
if (temp.data == value) {
return position;
}
temp = temp.next;
position++;
}
return -1; // 如果未找到,返回-1
}
// 打印链表
public void printList() {
Node temp = head;
while (temp != null) {
System.out.print(temp.data + " ");
temp = temp.next;
}
System.out.println();
}
}
public static void main(String[] args) {
List list = new List();
list.insertAtHead(11);
list.insertAtHead(12);
list.insertAtHead(13);
list.insertAtHead(14);
list.insertAtHead(15);
list.insertAtHead(16);
list.printList(); // 输出: 16 15 14 13 12 11
list.deleteAtPosition(2);
list.printList(); // 输出: 16 15 13 12 11
System.out.println("查找12的位置: " + list.find(12)); // 输出: 1
System.out.println("查找15的位置: " + list.find(15)); // 输出: 1
System.out.println("查找22的位置: " + list.find(22)); // 输出: -1
}
}
```
C语言实现