单链表的基本操作

本文详细介绍了一个基于C++实现的整数链表类的构造、插入、删除等核心操作,并提供了完整的源代码。读者可以了解到链表节点的定义、链表初始化、尾部插入、头部插入、指定位置插入及删除等功能的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>

using namespace std;
class LinkNodeOfInt{
    public:
        int data;
        LinkNodeOfInt *link;
        LinkNodeOfInt(const int &a,LinkNodeOfInt *ptr)
        {
            data=a;
            link=ptr;
        }
        LinkNodeOfInt()
        {

        }
    };
class ListOfint{
    public:
    LinkNodeOfInt *head;
    LinkNodeOfInt *tail;
    int size;
    ListOfint()
    {
        head=new LinkNodeOfInt(0,NULL);
        tail=head;
        size=0;
    }
    ListOfint(const ListOfint &list)
    {
        head=new LinkNodeOfInt(0,NULL);
        LinkNodeOfInt *cur=head->link;
        LinkNodeOfInt *othercur=list.head->link;
        int i=0;
        size=list.size;
    while(othercur!=NULL)
    {
          LinkNodeOfInt *s=new LinkNodeOfInt(othercur->data,NULL);
          if(i==0)
          {
              head->link=s;
              cur=head->link;
          }
          else
          {   cur->link=s;
              cur=cur->link;
              i++;
          }
          othercur=othercur->link;
    }
    }
    void insertTotail(int value)
    {
        LinkNodeOfInt *p=tail;
        p->link=new LinkNodeOfInt(value,NULL);
        tail=p->link;
    }
    void inserttoHead(int value)
    {
        LinkNodeOfInt *p=head->link;
        LinkNodeOfInt *s=new LinkNodeOfInt(value,p);
        head->link=s;
    }
    void prt_list()
    {
        LinkNodeOfInt *p=head->link;
        while (p)
        {
            cout<<p->data<<endl;
            p=p->link;
        }
    }
    LinkNodeOfInt* setPos(int pos)
    {
        if(pos==-1)
        {
            return head;
        }
        int count=0;
        LinkNodeOfInt *p=head->link;
        while(p!=NULL&&count< pos){
                p=p->link;
                count++;
        }
        return p;
    }
   bool insertPos(int i,int value)
   {
       LinkNodeOfInt *p,*q;
       if(p==setPos(i-1)==NULL)
       {
           cout<<"the operation is illegal";
           return false;
       }
       q=new LinkNodeOfInt(value,p->link);
       p->link=q;
       if(p==tail)
       {
           tail=q;
       }
       size++;
       return true;
   }
   bool deletePos(int i)
   {
       LinkNodeOfInt *p ,*q;
       if(p=setPos(i-1)==tail||p==tail)
       {
           cout<<"the operation is illegal";
           return false;
       }
       q=p->link;
       if(q==tail)
       {
           tail=p;
           p->link=NULL;
           delete q;
       }
       else if(q !=NULL)
       {
           p->link=q->link;
           delete q;
       }
       size--;
       return true;
   }
   int getSize()
   {
       return size;
   }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值