定义一个整形数组,例如:ElemType data[9] = { 11,-22,33,-3,-88,21,77,0,-9 };将其插入顺序表,并在表中完成顺序表的基本操作(删除、增加、查找、取值等)。
时间: 2024-10-08 20:24:54 浏览: 39
首先,我们需要定义一个顺序表结构体,包含元素数据和指向下一个元素的指针。这里是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点结构体
typedef struct ListNode {
int value; // 整型元素
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 创建新节点并分配内存
ListNode* createNode(int val) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->value = val;
newNode->next = NULL;
return newNode;
}
// 将整型数组插入顺序表
void insertArrayIntoList(ListNode** head, int arr[], int size) {
for (int i = 0; i < size; i++) {
ListNode* newNode = createNode(arr[i]);
if (*head == NULL) {
*head = newNode;
} else {
ListNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
}
// 删除第一个匹配值的节点
ListNode* deleteNode(ListNode* head, int target) {
if (head == NULL || head->value == target) {
ListNode* temp = head;
head = head->next;
free(temp);
return head;
}
ListNode* current = head;
while (current->next != NULL && current->next->value != target) {
current = current->next;
}
if (current->next != NULL) {
ListNode* temp = current->next;
current->next = current->next->next;
free(temp);
}
return head;
}
// 查找指定值的节点
ListNode* searchNode(ListNode* head, int target) {
ListNode* current = head;
while (current != NULL) {
if (current->value == target) {
return current;
}
current = current->next;
}
return NULL;
}
// 取值操作
int getValue(ListNode* node) {
if (node != NULL) {
return node->value;
}
return -1; // 如果为空,返回默认值或错误信息
}
int main() {
int data[] = { 11, -22, 33, -3, -88, 21, 77, 0, -9 };
ListNode* head = NULL;
insertArrayIntoList(&head, data, sizeof(data)/sizeof(data[0]));
// 示例操作
printf("删除值为-22的节点: %d\n", getValue(deleteNode(head, -22)));
printf("查找值为77的节点是否存在: %s\n", searchNode(head, 77) ? "存在" : "不存在");
return 0;
}
```
上述代码实现了将整型数组插入顺序表以及基本操作如删除、查找和取值。你可以根据需要调整main函数中的示例操作。
阅读全文