用c语言定义并初始化一个顺序表,并在顺序表中插入ElemType data[9] = { 11,-22,33,-3,-88,21,77,0,-9 };这个数据组,并将该整型数组中的所有数据插入前面定义的顺序表,并在顺序表中完成顺序表的其他基本操作(输出、删除、查找、取值)。
时间: 2024-10-08 20:04:51 浏览: 31
在C语言中,我们可以使用结构体和指针来模拟顺序表(如数组)的行为。首先,我们需要定义一个结构体`ListNode`表示列表节点,包含数据域`data`和指向下一个节点的指针`next`。
```c
#include <stdio.h>
// 定义顺序表节点结构体
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
// 初始化顺序表
ListNode* initList() {
ListNode* head = NULL;
return head;
}
// 插入数据到链表头部
void insertAtFront(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = *head;
*head = newNode;
} else {
printf("Memory allocation failed.\n");
}
}
// 将数组元素插入到链表头部
void insertArrayIntoList(ListNode** head, int arr[], int size) {
for (int i = 0; i < size; ++i) {
insertAtFront(head, arr[i]);
}
}
// 打印顺序表内容
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
// 删除第一个匹配的数据
bool deleteFirstMatchingElement(ListNode** head, int value) {
if (*head == NULL) {
return false;
}
if ((*head)->data == value) {
ListNode* temp = *head;
*head = (*head)->next;
free(temp);
return true;
} else {
ListNode* current = *head;
while (current->next != NULL && current->next->data != value) {
current = current->next;
}
if (current->next != NULL) {
ListNode* toDelete = current->next;
current->next = current->next->next;
free(toDelete);
return true;
} else {
return false;
}
}
}
// 查找指定值是否存在
int findElement(ListNode* head, int value) {
ListNode* current = head;
while (current != NULL) {
if (current->data == value) {
return 1; // 存在
}
current = current->next;
}
return 0; // 不存在
}
int main() {
int arr[] = { 11, -22, 33, -3, -88, 21, 77, 0, -9 };
int size = sizeof(arr) / sizeof(arr[0]);
ListNode* head = initList();
insertArrayIntoList(&head, arr, size);
printList(head); // 输出初始列表
// 进行删除、查找等操作...
return 0;
}
```
在这个例子中,我们定义了一个简单的顺序表,并演示了如何将给定的数组元素插入到表头。注意,这里没有实现真正的动态删除操作,因为删除操作通常需要额外考虑删除后的内存释放和指针调整。上述代码仅展示了基本的插入和打印功能。你可以根据需求添加相应操作的实现。
阅读全文