数组逆序重放(链表头插法练习)
传送门:http://ica.openjudge.cn/zz/1/
- 总时间限制: 1000ms 内存限制: 65536kB
- 描述
- 将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。
- 输入
- 输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。
- 输出
- 输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。
- 样例输入
-
5 8 6 5 4 1
- 样例输出
-
1 4 5 6 8
分析:头插法构造链表,然后扫描链表即可。
带多余头结点的代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 struct obj 4 { 5 int num; 6 struct obj *next; 7 }; 8 int main(int argc, char *argv[]) 9 { 10 int n,i,t; 11 struct obj *head=NULL,*temp,*p; 12 13 head=(struct obj *)malloc(sizeof(struct obj)); 14 head->next=NULL; 15 scanf("%d",&n); 16 for(i=0;i<n;i++) 17 { 18 scanf("%d",&t); 19 temp=(struct obj *)malloc(sizeof(struct obj)); 20 temp->num=t; 21 temp->next=NULL; 22 23 temp->next=head->next; 24 head->next=temp; 25 } 26 p=head->next; 27 while(p!=NULL) 28 { 29 printf("%d ",p->num); 30 p=p->next; 31 }/**/ 32 printf("\n"); 33 return 0; 34 }
不带多余头结点的代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 struct obj 4 { 5 int num; 6 struct obj *next; 7 }; 8 int main(int argc, char *argv[]) 9 { 10 int n,i,t; 11 struct obj *head=NULL,*temp=NULL,*p=NULL; 12 13 scanf("%d",&n); 14 for(i=0;i<n;i++) 15 { 16 scanf("%d",&t); 17 temp=(struct obj *)malloc(sizeof(struct obj)); 18 temp->num=t; 19 temp->next=NULL; 20 21 temp->next=head; 22 head=temp; 23 } 24 25 p=head; 26 while(p!=NULL) 27 { 28 printf("%d ",p->num); 29 p=p->next; 30 } 31 printf("\n"); 32 return 0; 33 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App