用C语言形成一个单链线性表,包括头插入法、尾插入法,以及在单链表上进行按序号查找和按值查找的方法,并通过具体的数据处理结果展示这些方法的运行情况。
时间: 2024-09-18 14:11:30 浏览: 45
在C语言中,我们可以使用结构体和指针来创建一个单链表。下面我会简述头插入法、尾插入法,以及按序号查找和按值查找的基本操作:
1. **单链表结构**:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
2. **头插入法(InsertAtHead)**:
```c
void insertAtHead(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
3. **尾插入法(InsertAtTail)**:
```c
void insertAtTail(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
if (*head == NULL) {
*head = newNode;
return;
}
Node* current = *head;
while (current->next != NULL)
current = current->next;
current->next = newNode;
}
```
4. **按序号查找(SearchByIndex)**:
```c
Node* searchByIndex(Node* head, int index) {
Node* current = head;
for (int i = 0; i < index && current != NULL; i++)
current = current->next;
return current;
}
```
5. **按值查找(SearchByValue)**:
```c
Node* searchByValue(Node* head, int value) {
Node* current = head;
while (current != NULL) {
if (current->data == value)
return current;
current = current->next;
}
return NULL; // 如果没找到则返回NULL
}
```
**运行情况举例**:
假设我们有一个包含数字的链表,例如 [2, 4, 6, 8, 10]。如果我们插入新元素5到头部,链表将变成[5, 2, 4, 6, 8, 10];尾部插入12,链表变为[2, 4, 6, 8, 10, 12]。如果我们要找索引为3的位置,会返回节点6,而查找值为8,会直接返回指向该位置的节点。
阅读全文