Problem H: 设计整型链表类List

Problem Description

设计一个整型链表类List,能够实现链表节点的插入(insert)、删除(delete),以及链表数据的输出操作(print)。

提示:链表结点用如下结构定义:
struct Node{//结点的结构
    int data;
    Node *next;
};

链表类List有一个数据成员head,类型是Node *

根据题目要求完善下面的程序:

#include<iostream>
using namespace std;

struct Node{//结点的结构
    int data;
    Node *next;
};

class List{
private:
    Node* head;
public:

//你的代码将被嵌在这里

int main()
{
    List list;//定义一个空链表list
    list.Listinsert(0,10);//在第0个结点的后面插入值为10的新结点,也即在链表头部插入新的结点
    list.Listinsert(0,66);
    list.Listinsert(1,292);//在第1个结点的后面插入值为10的新结点
    list.Listdelete(66);//删除链表中第一个值为66的结点
    list.Listinsert(2,-2);//在第2个结点的后面插入值为-2的新结点
    list.Listinsert(1,3);//在第1个结点的后面插入值为3的新结点
    list.Listprint();//从头到尾输出链表结点的值,每个输出值占一行
    return 0;
}

Sample Output

292
3
10
-2

    void Listinsert(int i, int x);
    void Listdelete(int x);
    void Listprint();
    List(){head=NULL;}

};

void List::Listinsert(int i, int x) {
    Node *p = head;
    Node *q = new Node;
    q->data = x;
    q->next = NULL;
    if (i == 0) {
        q->next = head;
        head = q;
    } else {
        for (int j = 0; j < i - 1; j++) {
            p = p->next;
        }
        q->next = p->next;
        p->next = q;
    }
};
    void List::Listdelete(int x) {
        Node *p = head;
        Node *q = head;
        if (p->data == x) {
            head = p->next;
            delete p;
        }
        else {
            while (p->data != x) {
                q = p;
                p = p->next;
            }
            q->next = p->next;
            delete p;
        }
    };
    void List::Listprint() {
        Node *p = head;
        while (p != NULL) {
            cout << p->data << endl;
            p = p->next;
        }
    };

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值