@yyy111 2022-04-15 17:00 采纳率: 75%
浏览 75

C++单链表连接问题

问题遇到的现象和发生背景

C++单链表连接。设有两条有序链表(即 data 域元素的关键字由前往后不断增大),试设计算法,将这两条链表合并为一条新的有序链表,原链表不变。两条链表中 data 域关键字相同的元素只选取一个存储到新的有序链表中,不同的元素都存储到新的有序链表中。

问题相关代码,请勿粘贴截图
#include <iostream>
#include <string>
using namespace std;
template<class T>
struct Node    //带头节点的单链表
{
    T data;
    struct Node<T>* next;
};
template<class T>
class linkList
{
    friend void merge(linkList<T>& a, linkList<T>& b);
    friend bool operator==(linkList<T>& a, linkList<T>& b);
private:
    Node<T>* front;    //定义头指针
public:
    linkList()      //无参构造函数定义空链表
    {
        front = new Node<T>; front->next = NULL;
    };
    linkList(T a[], int n);  //有参构造函数,用n个数据初始化链表
    ~linkList();             //析构函数,销毁链表
    Node<T>* get(int i);     //获取链表第i个元素地址
    T Delete(int i);         //删除链表第i个元素,并返回该元素值
};
template<class T>
linkList<T>::linkList(T a[], int n)   //头插法
{
    front = new Node<T>;              //建立头结点
    front->next = NULL;               //建立空链表
    for (int i = n - 1; i >= 0; i--)
    {
        Node<T>* p = new Node<T>;
        p->data = a[i];
        p->next = front->next;
        front->next = p;
    }
}
template<class T>
linkList<T>::~linkList()     //销毁链表
{
    Node<T>* p = front;     //初始化工作指针
    while (p != NULL)
    {
        front = p;
        p = p->next;
        delete front;
    }
}
template<class T>
Node<T>* linkList<T>::get(int i)
{
    Node<T>* p = front->next;     //初始化工作指针
    int j = 1;
    while (p && j != i)
    {
        p = p->next;
        j++;
    }
    return p;
}
template<class T>
T linkList<T>::Delete(int i)
{
    Node<T>* p = front;     //初始化工作指针
    if (i != 1)p = get(i - 1);
    Node<T>* s = p->next;
    p->next = s->next;
    delete s;
}
template<class T>
void merge(linkList<T> &a, linkList<T>& b)   //合并链表函数
{
                                              //请问该函数怎么写
}
template<class T>
bool operator==(linkList<T>& a, linkList<T>& b)   //重载运算符
{
                                                   //请问该函数怎么写
}
int main()
{

    system("pause");
    return 0;
}


运行结果及报错内容
我的解答思路和尝试过的方法

我的想法是写一个运算符重载的函数来判断a,b链表是否有相同元素。再写一个合并链表的函数,删掉b链表中与a链表相同的元素,并把b接在a链表后面

我想要达到的结果

求这两个函数怎么写

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-04-15 17:38
    关注

    数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

    评论

报告相同问题?

问题事件

  • 创建了问题 4月15日

悬赏问题

  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败