• 数据结构之单向链表


    所谓的数据结构很容易学习,我认为关键是在于对指针的概念的深刻理解

    链表类一般由操作函数和节点构成,这个节点可以是结构,也可以是一个类

    如下

    #include "iostream.h"
    struct NODE
    {
     NODE(){Hext = NULL;}//结构的构造函数,可以去掉
     int a;
        NODE *Hext;//指向下一个
    };

    class CLsit
    {
    public:
     CLsit();
     virtual ~CLsit();
     NODE* AddTail(NODE *node);
     NODE* AddHead(NODE *node);
     NODE* Find(int index);
     NODE* InsertAfter(NODE*node, NODE *newNode);

     void Printf();
     

    public:
    public:
          NODE *Head;
       NODE *pCurrent;
    };

    CLsit::CLsit()
    {
     Head = NULL;
    }

    CLsit::~CLsit()
    {

    }

    NODE* CLsit::AddTail(NODE *node)
    {
     if (!Head)
     {
      Head = node;
      pCurrent = node;
     }
     else
     {
           pCurrent->Hext = node;
        pCurrent = node;
     }

     return node;
    }

    NODE* CLsit::AddHead(NODE *node)
    {
        if (!Head)
        {
           Head = node;
        pCurrent = node;
        }
     else
     {
      node->Hext = Head;
      Head = node;
     }

     return node;

    }

    void CLsit::Printf()
    {
        NODE *pMed = Head;
        while (Head)
        {
      
      cout<<Head->a<<endl;
      Head = Head->Hext;
     }
     Head = pMed;
    }

    NODE* CLsit::Find(int index)
    {
     int n = 0;
     NODE *node = NULL;
     NODE *pMed = Head;
     if (index == 0)
     {
      return Head;
     }
     for (int i = 0; i < index; i++)
     {
            node = pMed->Hext;
      pMed = pMed->Hext;

     }
       return node;
    }

    NODE* CLsit::InsertAfter(NODE*node, NODE *newNode)
    {
     if (!node)
     {
      return AddTail(newNode);
     }
     else
     {
      NODE *pMed = node->Hext;
      node->Hext = newNode;
      newNode->Hext = pMed;
      return newNode;
     }

    }

    void main()
    {
       CLsit list;
       NODE * node = new NODE();
       node->a = 1;
       list.AddTail(node);

       NODE* node1 = new NODE();
       node1->a = 2;
       list.AddTail(node1);

       NODE *node2 = new NODE();
       node2->a = 3;
       list.AddTail(node2);

       NODE *node3 = new NODE();
       node3->a = 4;

       NODE *me = list.Find(1);
       list.InsertAfter(me,node3);

     

     

       list.Printf();
    }

  • 相关阅读:
    tcp/ip 卷一 读书笔记(1)tcp/ip 概述
    python项目使用jsonschema进行参数校验
    设置TCP_USER_TIMEOUT参数来判断tcp连接是否断开
    OpenStack中memcached的使用和实现
    Ironic中pxe driver和agent driver的区别
    tcp/ip 卷一 读书笔记(2)物理层和链路层网络
    C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
    软件测试Ron Patton
    实例: 创建一个欢迎cookie
    C/C++中Static的作用详述
  • 原文地址:https://www.cnblogs.com/lizhengjin/p/1267768.html
Copyright © 2020-2023  润新知