简单 单链表的增删改查 c++描述

2019 精帖
0 160

简单 单链表的增删改查 c++描述

class node{
public :
    int data;
    node * next;
};
#include "node.h"
using namespace std;
class stack{
public :
    node * head;
    stack(){
        head=NULL;
    }
    void add(int data);
    void del(int data);
    void print();
    void edit(int olddata,int newdata);
    node * getnode(int data);
};
#include<iostream>
#include "stack.h"
using namespace std;
void stack::add(int data){//添加节点
        if(head==NULL){    
            head=new node();
            head->data=data;
            head->next=NULL;
        }else{
            node * n=head;
            while(n->next!=NULL){
                n=n->next;
            }
            node * n_=new node();
            n_->data=data;
            n_->next=NULL;
            n->next=n_;
        }
}
void stack::print(){//打印节点
        node * n=head;
        while(n!=NULL){
            cout<<n->data<<" ";
            n=n->next;
        }
}
void stack::del(int data){//删除节点
    if(head!=NULL){
        if(head->data==data){
            head=head->next;
            return;
        }
    }else{
        return;
    }
    node * n=head;
    while(n->next!=NULL){
        if(n->next->data==data){
            node * n_=n->next;
            n_=NULL;
            n->next=n->next->next;
            return;
        }
        n=n->next;
    }
}
void stack::edit(int olddata,int newdata){//更改节点data
    node * n=head;
    while(n!=NULL){
        if(n->data==olddata){
            n->data=newdata;
            return;
        }
        n=n->next;
    }
}
node* stack::getnode(int data){//获取节点
    node * n=head;
    while(n!=NULL){
        if(n->data==data){
            return n;
        }
        n=n->next;
    }
    return NULL;
}

void main(){
    stack * s=new stack();
    s->add(1);
    s->add(2);
    s->add(3);
    s->add(4);
    s->del(1);
    s->edit(3,6);
    s->print();
    cout<<endl;
    cout<<s->getnode(6)->data<<endl;
}


QQ截图20181128214407.png


留言(0)
加载更多
猜你喜欢
  • blog java集合之TreeMap实现原理

    java集合之TreeMap实现原理         TreeMap集合实现其实说说复杂也复杂,说是因为TreeMap底层实现完全依靠红黑树这个数据结构,相比与HashMap来说Tr
  • blog 十种排序算法理解(前五)

    十种排序算法理解(前五)1.冒泡排序冒泡排序是一种排序算法。它重复地走访过要排序数列,一次比较两个元素,如果它们顺序错误就把它们交换过来。算法:比较相邻元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样工作
  • blog 蓝桥试题-兰顿蚂蚁

    问题:兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来,属于细胞自动机一种。  平面上正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。  蚂蚁头部朝向为:上下左右其中一方。  蚂蚁移动规则十分:  若蚂蚁在黑格
  • blog 二维数组行遍历和列遍历

    c++语言#include <iostream>using namespace std;int arr[4][6] = { 0 };int row = sizeof(arr) / sizeof(arr[0]);//行int col =
  • ofc vue使用v-model(双向数据绑定)自动收集数据

    vue使用v-model(双向数据绑定)自动收集数据
  • ofc layui table选事件监听以及选中数据获取

    layui table选事件监听以及选中数据获取
  • blog 什么是调栈?

    对于栈,一般来讲是先进后出。而所谓 调栈 则是在栈 先进后出 基础之上额外添加一个特性:从栈顶到栈底元素是严格递(or递减)。那么具体进栈过程如下:1.对于调递栈,若当前进栈元素为 e,从栈顶开始遍历元素,把小于 e 或者等于
  • file 判断是否有环以及求环入口和环长度2种方案分析-附java代码

    <pre class="language-java"><code class="line-numbers data-output match-braces rainbow-braces">/**
  • blog 数据结构和算法-判断是否有环 求环入口地址(java)

    问题:如上图一个,如何判断一个中是否存在环,以及如何求出环入口以及何如求出长度。 方案一:利用hash         首先准备一个hash如hashMap等,然后从头部
  • blog 二叉树除节点 c++

    二叉树除节点 c++先看一个树图除节点是分以下几种情况: 1.待节点为叶子节点:此种情况下直接除叶子节点即可 2.待节点只有左子树,或只有右子树,那么将左子树或右子树根节点替换该节点即可 3.待节点既有