王道数据结构练习

练习2.5

//试编写算法将带头结点的单链表就地逆置

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

using namespace std;

typedef struct Lnode{

    int data;

    struct Lnode *next;

}Lnode,*LinkList;

//初始化带头节点的单链表

void init_LinkList(LinkList &L){

    int x;

    L = (LinkList)malloc(sizeof(Lnode));

    Lnode *r = L,*p;

    cout<<"请输入数据(-1退出):";

    cin>>x;

    while(x != -1){

        p = (Lnode*)malloc(sizeof(Lnode));

        p->data = x;

        p->next = NULL;

        r->next = p;

        cout<<p->data<<" "<<p<<" "<<p->next<<endl;

        r = p;

        cout<<"请输入数据(-1退出):";

        cin>>x;

        }

}

//逆置单链表,采用头插法

void reverse_LinkList(LinkList &L){

    Lnode *r,*p;

//p指向表头下一个,即要插入位置 ,r指向原序表

    r = L->next;

    L->next = NULL;

    while(r != NULL){

        p = r;

        r = r->next;

        p->next = L->next;

        L->next = p;

    }

}

int main(){

    LinkList L;

     init_LinkList(L);

    Lnode *p;

    p = L->next;

    while(p!= NULL){

        cout<<p->data<<" ";

        p = p->next;

    }

    cout<<endl;

     p = L;

    reverse_LinkList(p);

    p = L->next;

    while(p!= NULL){

        cout<<p->data<<" ";

        p = p->next;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文来自本人著作《趣学数据结构》 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不一定相邻,那么...
    rainchxy阅读 3,787评论 6 20
  • 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不一定相邻,那么怎么表示逻辑上的相邻关系呢? 可以...
    rainchxy阅读 2,040评论 0 6
  • /** * @author huihut * @E-mail:huihut@outlook.com * @vers...
    刘帆_d384阅读 492评论 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,054评论 0 2
  • 组件系统是Vue的一个重要组成部分,它可以将一个复杂的页面抽象分解成许多小型、独立、可复用的组件,通过组合组件来组...
    kMacro阅读 3,002评论 2 3