c语言练习 2: 用顺序表实现
时间: 2024-09-25 12:01:49 浏览: 36
PTA—C语言数据结构:顺序表.ppt
在C语言中,顺序表是一种基础的数据结构,它通过数组的形式存储数据,操作通常涉及对数组下标的直接访问。以下是使用顺序表实现一些基本操作的例子:
1. **创建顺序表**:
- 定义一个结构体表示节点,包含数据域和指向下一个节点的指针。
```c
typedef struct Node {
int data;
struct Node* next;
} ListNode;
```
- 创建顺序表函数,初始化一个空链表:
```c
ListNode* createList() {
ListNode* head = NULL; // 初始链表为空
return head;
}
```
2. **插入元素**:
- 在指定位置插入新元素:
```c
void insertNode(ListNode** head, int data, int position) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = data;
newNode->next = *head;
if (position == 0) { // 插入在头部
*head = newNode;
} else {
ListNode* temp = *head;
for (int i = 0; i < position - 1 && temp != NULL; i++) {
temp = temp->next;
}
if (temp != NULL) {
newNode->next = temp->next;
temp->next = newNode;
}
}
}
```
3. **删除元素**:
- 删除某个位置的元素(例如删除第n个元素):
```c
void deleteNode(ListNode** head, int position) {
if (*head == NULL || position <= 0) return; // 没有元素或位置错误
ListNode* temp = *head;
for (int i = 0; i < position - 1 && temp != NULL; i++) {
temp = temp->next;
}
if (temp != NULL) {
temp->next = temp- 查找特定值在列表中的位置:
```c
int searchNode(ListNode* head, int data) {
ListNode* current = head;
while (current != NULL) {
if (current->data == data) {
return current->position; // 假设每个节点都有一个position属性
}
current = current->next;
}
return -1; // 数据未找到
}
```
**相关问题--:**
1. 序列表的优点和缺点是什么?
2. 如何实现顺序表的动态扩容和缩容?
3. 序列表适用于哪些场景?
阅读全文