用C++类实现单向链表的增删查

  • 先看类定义
class node
{
public:
  int data;
  node *next;
};
class linklist
{
  node *h;
  ……//一些函数
}

  • 一、整表的创建(这里使用头插)
void head(linklist &l,int n)
  {
    node *p;
    p=new node;
    l.h=p;//定义头结点和投指针
    p->data=n;//头指针的数据域是结点个数
    p->next=NULL;//最末结点的后继必须为空
    for(int i=0;i<n;i++)//创建n个新结点
    {
      node *q=new node;
      cin>>q->data;
      q->next=p->next;
      p->next=q;//每个新结点都放在头结点后面
    }
  }
  • 二、单结点插入
void insert(linklist &l,int n,int num)
  {
    node *p=l.h;
    for(int i=0;i<n;i++)
    {
      p=p->next;
    }//找到插入的位置
    node *q=new node;
    q->next=p->next;
    p->next=q;
    q->data=num;
  }

  • 三、单结点删除
void del(linklist &l,int n)
  {
    node *p=l.h;
    for(int i=0;i<n-1;i++)
    {
      p=p->next;
    }//找到删除的位置
    node *q=p;
    q=q->next;
    p->next=q->next;
    delete q;//释放空间
  }

  • 四、查找结点
    void search(linklist &l,int n)
      {
        node *p=l.h;
        for(int i=0;i<n;i++)
        {
          p=p->next;
        }
        cout<<p->data<<endl;
      }
    

猜你喜欢

转载自blog.csdn.net/xpdbaba/article/details/80021649
今日推荐