SDUT K - 数据结构实验之链表一:顺序建立链表
时间: 2025-01-28 13:41:04 浏览: 49
### 创建顺序链表
为了实现顺序建立链表的任务,可以采用C++或Java编程语言来完成。下面提供两种方式的具体代码示例。
#### C++ 示例
在C++中定义节点类`Node`以及用于操作链表的方法:
```cpp
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node* next;
};
// 插入新结点到链表末尾
void append(Node*& head, int newData) {
Node* newNode = new Node();
newNode->data = newData;
newNode->next = NULL;
if (head == NULL) { // 如果列表为空,则设置头指针指向新的节点
head = newNode;
return;
}
Node *last = head;
while (last->next != NULL) last = last->next; // 找到最后一个节点
last->next = newNode; // 将最后一个节点链接至新节点
}
// 显示链表中的所有元素
void displayList(Node* node) {
while(node != NULL){
cout << node->data << " ";
node = node->next;
}
}
```
接着编写主函数读取用户输入并调用上述方法构建链表[^1]:
```cpp
int main() {
int n;
cin >> n;
Node* listHead = NULL;
for(int i=0;i<n;++i){
int value;
cin>>value;
append(listHead,value);
}
displayList(listHead); // 展示最终形成的链表
return 0;
}
```
#### Java 示例
对于Java版本,同样先声明内部静态类表示链表节点,并且创建辅助功能来进行插入和打印操作:
```java
import java.util.Scanner;
class LinkedList {
static class Node {
int data;
Node next;
public Node(int d) {
this.data = d;
this.next = null;
}
}
private static void addAtEnd(Node headRef, int newValue) {
Node end = new Node(newValue);
if(headRef==null){
headRef=end;
return ;
}else{
Node temp=headRef;
while(temp.next!=null){
temp=temp.next;
}
temp.next=end;
}
}
private static void printLinkedList(Node node) {
while (node != null) {
System.out.print(node.data + " ");
node = node.next;
}
}
}
```
随后,在`main()`方法里处理标准输入流并将接收到的数据加入到新建的链表实例当中:
```java
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int size=scanner.nextInt();
LinkedList.Node head=null;
for(int i=0;i<size;i++){
int num=scanner.nextInt();
LinkedList.addAtEnd(head,num);
}
LinkedList.printLinkedList(head); // 输出整个链表的内容
}
}
```
阅读全文
相关推荐

















