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; // 返回结果数组
}
版权声明:本文标题:c语言1链表例题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713731591a648936.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论