admin 管理员组

文章数量: 1086019


2024年4月22日发(作者:java并发处理)

以下是一个简单的 C 语言链表示例题目:

题目描述:

给定一个整数数组,请将数组中的元素按逆序输出,并返回逆序输出后的数组。

示例:

输入:[1,2,3,4,5]

输出:[5,4,3,2,1]

解题思路:

可以使用链表来实现逆序输出数组。具体步骤如下:

1.

2.

3.

4.

定义一个链表结构体,包含一个整数和一个指向下一个节点的指针。

遍历给定的整数数组,将每个元素作为链表的节点插入到链表中。

定义一个指针指向链表的头节点,从头节点开始遍历链表,依次输出每个节点的值。

返回输出的结果数组。

代码如下:

c

复制代码

#include

#include

typedef struct ListNode {

int val;

struct ListNode *next;

} ListNode;

int* reverseList(int* head_ref, int size) {

ListNode *p = (ListNode*)malloc(sizeof(ListNode)); // 创建头节点

p->val = 0; // 头节点值为0,可以根据实际情况修改

p->next = NULL; // 头节点指向空,表示链表为空

ListNode *q = p; // q指向头节点,作为输出结果的起始位置

for (int i = 1; i <= size; i++) { // 从第二个元素开始遍历数组

ListNode *tmp = (ListNode*)malloc(sizeof(ListNode)); // 创建新节点

tmp->val = head_ref[i]; // 将当前元素赋值给新节点

tmp->next = NULL; // 新节点指向空,表示新节点为链表的最后一个节点

q->next = tmp; // q指向的节点的下一个节点指向新节点,完成插入操作

q = tmp; // q指向新节点,作为输出结果的下一个位置

}

int *res = (int*)malloc(sizeof(int) * size); // 创建结果数组

int cnt = 0; // 结果数组计数器

while (p->next != NULL) { // 遍历链表,依次输出每个节点的值到结果数组中

res[cnt++] = p->next->val;

p = p->next; // p向后移动到下一个节点

}

free(p); // 释放头节点内存空间

return res; // 返回结果数组

}


本文标签: 节点 链表 数组 输出