单链表的逆转
来源:互联网 发布:crt连接虚拟机centos 编辑:程序博客网 时间:2024/05/16 09:47
单链表的逆转方法多种,下面是一种常用且方便的方法,我起了个名字,叫做“头插法翻转原链表”。
#include <stdio.h>#include <iostream>#include <stdlib.h>#define MAX 1000typedef int ElementType;typedef struct Node *PtrToNode;struct Node{ ElementType Data; PtrToNode Next;} ;typedef PtrToNode List;List Read(){ int n,i; int *p; p=new int[10]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&p[i]); List head,q,s; head=new Node; q=new Node; head->Next=q; q->Data=p[0]; for(i=1;i<n;i++) { s=new Node; s->Data=p[i]; q->Next=s; q=s; } q->Next=NULL; return head;}void Print(List L){ L=L->Next; while(L->Next!=NULL) { printf("%d ",L->Data); L=L->Next; } printf("%d\n",L->Data); return ;}List Reverse(List L){ if(L==NULL) return NULL; List p,q,r,head; head=L; q=p=head->Next; if(p==NULL) return head; head->Next=NULL; //head结点后为空 while(p) { q=q->Next; //q结点为正操作结点p的后一个节点 p->Next=head->Next; //每次将p结点插到头结点和开始节点之间,同时head->next=NULL,即将NUll的值赋给p->next; head->Next=p; //再将头结点L指向p结点 p=q; } return head;}int main(){ List L1,L2; L1=Read(); Print(L1); L2=Reverse(L1); Print(L2); return 0;}
0 0
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的就地逆转
- 单链表的逆转
- 单链表的逆转实现
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转问题
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- NBUT 1647 又一道简单题【数学+枚举】
- Jenkins进阶系列之——07更改Jenkins的主目录
- Kubernetes是什么?
- 立方体环境贴图(Cube Mapping)之OpenGL原理
- Ubuntu14.04安装androidStudio错误解除
- 单链表的逆转
- Jenkins进阶系列之——08Jenkins纳入版本控制
- C 数据保存文件中
- 蓝桥杯_算法提高_判断名次
- 商业书籍精华摘要《专注》丹尼尔·戈尔曼 Focus by Daniel·Goleman
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
- 【杭电oj】1280 - 前m大的数(水)
- svn无法checkout
- 第四周上机实践项目——项目3-随机数函数应用于游戏