单链表的插入和删除 C++实现
  TEZNKK3IfmPf 2024年03月29日 48 0

 

#pragma once
 
定义链表和节点///
 
节点类
class Node
{
public:
    methods
    Node(void);
    Node(int data);
    ~Node(void);

    /members
    Node* next;
    int data;
};

链表类
class MyLinkTable{
public:
    //methods
    void RemovdeAt(int position,Node* head);
    void Add(Node* node,Node* head);
    void AddAfter(int position,Node* head,Node* node);
    bool IsEmpty(Node* head);
    void PrintNodes(Node* head);
    /members
    Node* head;
};
///实现///
 
#include "StdAfx.h"
#include "Node.h"
#include <iostream>

/node methods/
Node::Node(void)
{
    Node::data=0;
    Node::next=NULL;
}

Node::Node(int data)
{
    Node::data = data;
    Node::next=NULL;
}

Node::~Node(void)
{
}

//end//

///linkTable methods//
 
移除某个节点//
void MyLinkTable::RemovdeAt(int position,Node* head){
if(this->IsEmpty(head) || position < 0){
return;
}

如果要删除头结点
if(position == 0)
{
Node* n = head;
head=head->next;
delete n;
MyLinkTable::head = head;
return;
}

Node* p = new Node;
p=head;
for(int i=0;i<position-1&&p!=NULL;p=p->next,i++);

if(p!=NULL)
{
Node* n = p->next;
p->next = p->next->next;
free(n);
}
}
 
/在末尾追加节点
void MyLinkTable::Add(Node* node,Node* head){
    if(this->IsEmpty(head))
    {
    return;
    }
Node* p = head;
while(p->next)
{
p=p->next;
}

p->next = node;
node->next = NULL;

}
/在制定位置后面添加节点
void MyLinkTable::AddAfter(int position,Node* head,Node* node){
    if(this->IsEmpty(head)){
    return;
    }
Node* p = head;
for(int i = 0;i < position && p->next != NULL;p=p->next,i ++);

node->next = p->next;
p->next = node;

}
 
 
判断链表是否非空
bool MyLinkTable::IsEmpty(Node* head){
return head==NULL;
}
 
 
打印链表
void MyLinkTable::PrintNodes(Node* head){

    std::cout<<std::endl;
    while(head){
        std::cout<<head->data<<" ";
    head=head->next;
    }
    
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年03月29日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月12日   18   0   0 算法leetcodeC++
TEZNKK3IfmPf