通过键盘读取元素建立一个线性表;指定一个元素,在此元素之前插入一个新元素;指定一个元素,删除此元素,用c语言写一串代码,实现以上内容
时间: 2024-10-11 09:08:20 浏览: 44
在C语言中,我们可以使用数组或链表数据结构来实现线性表。这里是一个简单的例子,我们将使用动态链表(也叫单链表)来演示如何插入和删除元素:
首先,我们定义一个节点结构体:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接下来,创建函数来操作这个链表:
1. 初始化链表(如果需要的话):
```c
Node* createList() {
Node* head = NULL; // 创建链表头节点
return head;
}
```
2. 插入元素到指定位置(这里假设`insertBeforeElement`函数已经存在,它会找到目标元素并返回其前一个节点):
```c
void insertElementBefore(Node** head, int targetValue, int newNodeData) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 分配内存
newNode->data = newNodeData;
newNode->next = *head;
Node* prevNode = insertBeforeElement(head, targetValue); // 找到目标元素的前一个节点
if (prevNode != NULL) {
prevNode->next = newNode; // 将新节点插入链表
} else {
printf("Target value not found in the list.\n");
}
}
```
3. 删除元素:
```c
void deleteElement(Node** head, int targetValue) {
Node* current = *head;
Node* previous = NULL;
while (current != NULL && current->data != targetValue) {
previous = current;
current = current->next;
}
if (current == NULL) {
printf("Element not found in the list.\n");
} else {
if (previous == NULL) { // 如果要删除的是头节点
*head = current->next;
} else {
previous->next = current->next;
}
free(current); // 释放已删除节点的内存
}
}
```
注意:为了完整地使用这些函数,你需要编写一个`insertBeforeElement`函数来辅助查找目标元素。
阅读全文