使用C语言实现实验内容: ① 随机产生一组两位数整数,建立线性表的单向链式存储结构。 ② 实现该线性链表的遍历。 ③ 在该链表中查找某一元素,查找成功显示查找元素,否则显示查找失败。 ④ 在该链表中删除或插入指定元素。
时间: 2024-09-29 18:07:47 浏览: 24
在C语言中实现上述实验内容,首先需要定义链表节点结构体以及一些辅助函数。以下是基本步骤:
1. **随机产生并初始化链表节点**:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点并随机填充数据
Node* createRandomNode() {
srand(time(0)); // 初始化随机种子
int randomData = rand() % 90 + 10; // 生成10到99的随机数
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = randomData;
newNode->next = NULL;
return newNode;
}
```
2. **创建链表**:
```c
// 创建并初始化链表
void createLinkedList(Node** head) {
*head = createRandomNode();
if (*head == NULL) {
printf("Error creating initial node.\n");
return;
}
Node* current = *head;
while (current->next != NULL) {
current->next = createRandomNode();
if (current->next == NULL) {
break;
}
current = current->next;
}
}
```
3. **遍历链表**:
```c
// 遍历链表并打印元素
void traverseList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
```
4. **查找元素**:
```c
// 查找链表中特定元素
void searchElement(Node* head, int target) {
Node* current = head;
while (current != NULL) {
if (current->data == target) {
printf("Found element %d.\n", target);
return;
}
current = current->next;
}
printf("Element not found.\n");
}
```
5. **插入和删除元素**:
- **插入元素**:
```c
// 在链表中指定位置插入元素
void insertElement(Node** head, int position, int value) {
Node* newNode = createRandomNode(); // 新节点
newNode->data = value;
Node* temp = *head;
for (int i = 0; i < position - 1 && temp != NULL; ++i) {
temp = temp->next;
}
if (temp == NULL) {
printf("Invalid position.\n");
return;
}
newNode->next = temp->next;
temp->next = newNode;
}
```
- **删除元素**:
```c
// 删除链表中的特定元素
void deleteElement(Node** head, int target) {
Node* current = *head;
Node* prev = NULL;
while (current != NULL) {
if (current->data == target) {
if (prev == NULL) { // 如果是头节点
*head = current->next;
} else {
prev->next = current->next;
}
free(current); // 释放内存
return;
}
prev = current;
current = current->next;
}
printf("Element not found.\n");
}
```
记得在使用这些函数前,先分配内存给`head`指针,并在完成后清理不再需要的节点。