c语言编写一个函数实现顺序表的创建
时间: 2024-10-19 13:15:09 浏览: 28
C语言顺序表实现代码排错
在C语言中,可以使用结构体和指针来实现顺序表(也称为动态数组)。下面是一个简单的例子,展示了如何创建、插入元素以及释放顺序表:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表的节点结构体
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} ListNode;
// 创建一个新的顺序表节点并初始化
ListNode* createNode(int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
// 创建顺序表,初始为空
ListNode* createSequentialList() {
return NULL;
}
// 在顺序表末尾插入新元素
void insertAtEnd(ListNode** head, int value) {
ListNode* newNode = createNode(value);
if (*head == NULL) {
*head = newNode;
} else {
ListNode* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 打印顺序表内容
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
// 释放顺序表
void freeList(ListNode** head) {
ListNode* temp;
while (*head != NULL) {
temp = *head;
*head = (*head)->next;
free(temp);
}
}
int main() {
ListNode* listHead = createSequentialList();
// 插入一些元素
insertAtEnd(&listHead, 10);
insertAtEnd(&listHead, 20);
insertAtEnd(&listHead, 30);
// 打印列表
printList(listHead);
// 释放内存
freeList(&listHead);
return 0;
}
```
在这个例子中,`createSequentialList()` 返回一个空的头结点。`insertAtEnd()` 函数用于在列表末尾添加新元素,而 `freeList()` 则负责释放所有节点的内存。
阅读全文