编写一个程序,实现顺序表(单链表)的各种基本操作(编写各个函数,假设表中元素数据域类型是整型),在此基础上通过main函数调用实现以下功能。(1)、初始化顺序表(单链表)L
时间: 2024-10-08 09:06:58 浏览: 36
编写顺序表(单链表)的基本操作涉及到以下几个关键步骤:
1. **定义结构体**:首先,我们需要创建一个表示节点的结构体,包含整数值和指向下一个节点的指针。
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
2. **初始化函数**:创建一个用于初始化空列表的函数,它返回链表头指针。
```c
Node* initializeList() {
return NULL; // 初始链表为空,返回NULL
}
```
3. **插入元素**:向链表末尾添加新节点的函数。
```c
void insertElement(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
4. **删除元素**:移除指定值的节点。如果链表中有该值,将前一个节点的`next`指针指向被删除节点的下一个节点。
```c
void deleteElement(Node** head, int value) {
if (*head == NULL) return; // 如果链表为空
Node* current = *head;
while (current != NULL && current->data != value) {
current = current->next;
}
if (current == NULL) return; // 没找到要删除的节点
Node* temp = current->next;
free(current);
*head = temp;
}
```
5. **查找元素**:搜索链表中是否存在特定值并返回其索引(从0开始),如果没有则返回-1。
```c
int searchElement(Node* head, int value) {
Node* current = head;
int index = 0;
while (current != NULL) {
if (current->data == value) return index;
current = current->next;
index++;
}
return -1;
}
```
6. **遍历显示链表**:打印整个链表的内容。
```c
void displayList(Node* head) {
if (head == NULL) return;
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
```
接下来,在`main`函数中,你可以结合这些函数来创建、操作和展示顺序表:
```c
int main() {
Node* L = initializeList(); // 初始化链表
// 插入元素示例
insertElement(&L, 10);
insertElement(&L, 20);
insertElement(&L, 30);
// 显示链表内容
displayList(L);
// 删除元素示例
deleteElement(&L, 20);
// 再次显示链表
displayList(L);
return 0;
}
```
阅读全文