博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言实现链表的原地置逆
阅读量:7030 次
发布时间:2019-06-28

本文共 1216 字,大约阅读时间需要 4 分钟。

思路

将原来的链表用头插法重新插入头节点后面

#include 
#include
#define LEN sizeof(SNODE)typedef struct node{ int num; struct node *next;}SNODE;void print(SNODE *head){ head=head->next; while(head!=NULL) { printf("%d ",head->num); head=head->next; } putchar('\n');}//printvoid creatLink(int n,SNODE *head){ SNODE *p,*q; p=head; while(p->next!=NULL) p=p->next; q=(SNODE*)malloc(LEN); q->num=n; q->next=NULL; p->next=q;}//creatLinkvoid inverseLink(SNODE *head){ SNODE *p,*q; if(head->next!=NULL)//链表不空 { p=head->next; q=p; head->next=NULL; while(p!=NULL)//头插法重新插入 { q=p->next; p->next=head->next; head->next=p; p=q; } }}//inverseLinkint main(){ SNODE *head; head=(SNODE*)malloc(LEN);//新建头节点 head->next=NULL; head->num=-1; int n; char c; while(1)//输入的整形以空格隔开 { scanf("%d",&n);//读入数字 creatLink(n,head);//插入链表 c=getchar();//吃掉空格 if(c=='\n') break; } print(head);//打印原链表 inverseLink(head);//置逆链表 print(head);//打印置逆后的链表 return 0;}//main

转载于:https://www.cnblogs.com/DismalSnail/p/10543916.html

你可能感兴趣的文章
我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)
查看>>
RESTful 架构详解
查看>>
windows修复分区卷:chkdsk
查看>>
面向对象编程---图片轮播
查看>>
git 使用遇到的问题
查看>>
数据结构之【队列】
查看>>
黑马程序员—Socket 网络编程有感
查看>>
磁盘管理
查看>>
Algs4-2.3.20非递归的快速排序
查看>>
socket、tcp、udp、http 的认识及区别
查看>>
badboy使用手册
查看>>
React从0到1--组件向外传递数据
查看>>
hausaufgabe--python 12-List comprehensions
查看>>
哈哈更新资源列表2
查看>>
文本的四种编码方式
查看>>
Capitals of different countries
查看>>
sql server 2000数据库备份文件还原成sql server 2005 /2008
查看>>
哈希表及冲突的方法
查看>>
iOS开发UI篇—简单的浏览器查看程序
查看>>
iOS开发网络篇—搭建本地服务器
查看>>