动态单链表的就地逆置
2016-05-06 12:29
239 查看
//单链表逆置
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}Node , *LinkList ;
LinkList CreatList(LinkList L,int *num)//创建链表并统计长度,输入0结束;
{
LinkList p,q;
L = (LinkList)malloc(sizeof(Node));
L -> next = NULL;
q = L;
while(1)
{
p = (LinkList)malloc(sizeof(Node));
scanf("%d",&p -> data);
p -> next = NULL;
if(p -> data == 0)
break;
(*num) ++;
q -> next = p;
q = p;
}
return L;
}
LinkList reverList(LinkList L)//变相的头插法重置链表
{
LinkList p , q;
p = L -> next;
L -> next = NULL;
while(p)
{
q = p -> next;
p -> next = L -> next;
L -> next = p;
p = q;
}
p = L -> next;
while(p)
{
printf("%d ",p -> data);
p = p -> next;
}
return L;
}
int main()
{
LinkList L;
int len = 0;
L = CreatList(L,&len);
printf("the length of your List is:%d \n",len);
reverList(L);
system("pause");
return 0;
}
// 只能说和头插法几乎一样
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}Node , *LinkList ;
LinkList CreatList(LinkList L,int *num)//创建链表并统计长度,输入0结束;
{
LinkList p,q;
L = (LinkList)malloc(sizeof(Node));
L -> next = NULL;
q = L;
while(1)
{
p = (LinkList)malloc(sizeof(Node));
scanf("%d",&p -> data);
p -> next = NULL;
if(p -> data == 0)
break;
(*num) ++;
q -> next = p;
q = p;
}
return L;
}
LinkList reverList(LinkList L)//变相的头插法重置链表
{
LinkList p , q;
p = L -> next;
L -> next = NULL;
while(p)
{
q = p -> next;
p -> next = L -> next;
L -> next = p;
p = q;
}
p = L -> next;
while(p)
{
printf("%d ",p -> data);
p = p -> next;
}
return L;
}
int main()
{
LinkList L;
int len = 0;
L = CreatList(L,&len);
printf("the length of your List is:%d \n",len);
reverList(L);
system("pause");
return 0;
}
// 只能说和头插法几乎一样
相关文章推荐
- 第十周-阅读程序
- More Effective C++----(17)考虑使用lazy evaluation(懒惰计算法)
- Wireshark抓包分析【基础-进阶-实战】视频课程 (34课时)
- NYOJ 1100-WAJUEJI which home strong!【bfs】
- 【HUSTOJ】1068: 拐角I
- CodeForces Round#22 C System Administrator 构造割点图
- 在windows authentication模式下获取发起request的用户所属于的AD group信息
- 我认为一些非常有用的常用类(超神)
- redis for windows之nosql还需要入门?
- 【图解JDK源码】HashMap的容量大小增长原理(JDK1.6/1.7/1.8)
- LeetCode 221. Maximal Square(最大正方形)
- squid如何做正向代理,通过重定向器匹配正则重写url
- javascript测试三种字符串替换方式效率
- 设计模式之建造者模式(Builder)
- 设计模式——调停者模式
- 初识Spring-MVC之DispatcherServlet详解
- bzoj 3244: [Noi2013]树的计数 递推
- 移动端的clientX
- iOS开发网络篇—搭建本地服务器
- WdatePicker日历控件使用方法