• 单链表的创建及遍历


    读入n值及n个整数,建立单链表并遍历输出。

    输入格式:

    读入n及n个整数。

    输出格式:

    输出n个整数,以空格分隔(最后一个数的后面没有空格)。

    输入样例:

    在这里给出一组输入。例如:

    2
    10 5
    

    输出样例:

    在这里给出相应的输出。例如:

    10 5



    代码如下:

    /*
    填空:单链表的建立与遍历程序。
    */

    #include<iostream>
    using namespace std;

    #define OK 1
    #define ERROR 0

    typedef int Status;
    typedef int ElemType;

    typedef struct LNode{
    ElemType data; //数据域
    struct LNode *next; //指针域
    } LNode, *LinkList;

    Status InitList( LinkList&L); //函数声明
    void CreateList( LinkList &L,int n); //函数声明
    void DisplayList( LinkList ); //函数声明
    void DestroyList( LinkList ); //函数声明

    int main()
    {
    LinkList L; //值传递
    InitList( L ); //调用函数InitList
    int n;
    cin >> n;
    CreateList( L, n );
    DisplayList( L );
    DestroyList( L );
    return 0;
    }

    Status InitList(LinkList&L)
    {
    L = new LNode ;
    L->next = NULL ;
    return OK;
    }

    void CreateList( LinkList &L,int n )
    //尾插法建立带头结点的有n个元素的链表
    {
    LNode *p, *r; //定义p与r指针

    r = L ; //尾指针r指向头结点

    for( int i=0; i<n; ++i ){
    p = new LNode ; //生成新结点*p
    cin >> p->data; //输入元素值
    p->next= NULL;
    r->next = p ; //将p插入到表尾
    r = p; //r指向新的尾结点
    }
    }

    void DisplayList( LinkList L )
    //遍历带头结点的单链表
    {
    LNode *p =L->next ;
    while ( p )
    { if(p->next==NULL)
    {
    cout<<p->data;}
    else cout <<p->data<<" ";
    p=p->next;


    }

    }

    void DestroyList( LinkList L )
    {//回收L的所有结点的空间
    LNode *p = L, *q;
    while ( p ) //当p指向结点不为空
    {
    q = p->next; //q指向p的下一结点
    delete p; //回收p指向的结点空间
    p = q; //p指向q指向的结点
    }}

    这是单链表最基本的运用,也是熟悉使用单链表的重要的一步

  • 相关阅读:
    JSONP原理
    什么是跨域,如何解决
    工程化与模块化开
    vue双向数据绑定原理
    vuex原理
    BFC 原理
    http状态码 301、302区别
    用户页面打开很慢,有哪些优化方式?
    webpack打包
    Promise 原理
  • 原文地址:https://www.cnblogs.com/fengwanthousand/p/10546007.html
Copyright © 2020-2023  润新知