逆置/反转单链表
来源:互联网 发布:telnet 端口号不通 编辑:程序博客网 时间:2024/05/24 03:17
思路:摘结点法
//逆置/反转单链表#include<iostream>using namespace std;typedef int DataType;typedef struct SListNode{DataType data; //数据struct SListNode * next; //指向下一个结点的指针}SListNode;SListNode* CreateNode(DataType x) //创造结点{//1.先开辟空间 2.数据赋给data 3.指针置空SListNode* NewNode = (SListNode *)malloc(sizeof (SListNode));NewNode->data = x;NewNode->next = NULL;return NewNode;}void PushBack(SListNode * &ppHead, DataType Data){//1.none 2.one and moreif (ppHead == NULL){ppHead = CreateNode(Data);}else{//1.先找到尾结点 2.把新节点链起来SListNode* cur = ppHead;while (cur->next){cur = cur->next;}cur->next = CreateNode(Data);}}//打印void PrintSNodeList(SListNode *&ppHead){while (ppHead){printf("%d->", ppHead->data);ppHead = ppHead->next;}cout << "NULL" << endl;}//逆置/反转单链表SListNode* ReverseList(SListNode*& pHead){//摘结点法SListNode* cur = pHead; SListNode* newHead = NULL; //创建一个新头结点while (cur){SListNode* tmp = cur; //tmp指向curcur = cur->next;//cur指向下一个tmp->next = newHead; //1.第一次tmp->next=NULL 2.以后每次利用tmp把结点和newHead连起来newHead = tmp; //再把头结点向前移}return newHead;}void Test(){SListNode* pHead = NULL;PushBack(pHead, 1);PushBack(pHead, 2);PushBack(pHead, 3);PushBack(pHead, 4);PushBack(pHead, 5);PushBack(pHead, 6);PushBack(pHead, 7);PushBack(pHead, 8);SListNode* newHead=ReverseList(pHead);PrintSNodeList(newHead);}int main(){Test();system("pause");return 0;}
1 0
- 逆置/反转单链表
- 逆置 / 反转单链表
- 逆置/反转单链表
- 链表--逆置/反转单链表
- 逆置/反转单链表
- 单链表反转
- 单链表反转
- 单链表反转
- 反转单链表
- 单链表反转
- 反转单链表
- 单链表-反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- webpack loader
- 虚继承类内存大小计算
- 拷贝构造函数与赋值构造函数
- SVM核函数
- 2016 UESTC Training for Data Structures B - 卿学姐与基本法 自己构建了一个和堆有点像的数据结构
- 逆置/反转单链表
- yum install lrzsz
- 支付宝的SDK 编译 #include <openssl/asn1.h> not found
- 写在即将16个小时火车硬座,没办法,爱情
- Java:JVM的内存区域划分
- Android中Bitmap, Drawable, Byte,ID之间的转化
- svn update
- #奇葩论--关于C语言中的仅用"[]"运算符实现加法运算
- POJ 1321棋盘不同行不同列问题 dfs