以下是一个简单的 C 语言链表示例题目:
题目描述:
给定一个整数数组,请将数组中的元素按逆序输出,并返回逆序输出后的数组。
示例:
输入:[1,2,3,4,5]
输出:[5,4,3,2,1]
解题思路:
可以使用链表来实现逆序输出数组。具体步骤如下:
1.定义一个链表结构体,包含一个整数和一个指向下一个节点的指针。
2.遍历给定的整数数组,将每个元素作为链表的节点插入到链表中。
3.定义一个指针指向链表的头节点,从头节点开始遍历链表,依次输出每个节点的值。
4.返回输出的结果数组。
代码如下:
c复制代码
结构体sizeof
#include <stdio.h>
#include <stdlib.h>
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; // 返回结果数组
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。