ZBLOG

使用c++多链表修改此代码:#ifndef NULL #define NULL 0 #endif #include using namespace std; //定义单链表结点结构 struct LNode { int data; LNode* next; LNode() {}; LNode(int e, LNode* n = NULL) :data(e), next(n) {}; }; //单链表list类创建 class List { protected...

使用C++多链表修改后的代码如下所示:

#ifndef NULL
#define NULL 0
#endif

#include<iostream>
using namespace std;

// 定义多链表结点结构
struct MLNode {
    int data;
    MLNode* next;
    MLNode* sibling; // 指向兄弟链表的头节点
    MLNode() {}
    MLNode(int e, MLNode* n = NULL, MLNode* s = NULL) : data(e), next(n), sibling(s) {}
};

// 多链表list类创建
class MultiList {
protected:
    MLNode* head;
public:
    // 构造函数
    MultiList() {
        head = new MLNode;
        head->next = NULL;
        head->sibling = NULL;
    }

    // 头插法插入元素到兄弟链表中
    void insertSibling(int& e) {
        MLNode* p = new MLNode(e, NULL, head->sibling);
        head->sibling = p;
    }

    // 在指定位置插入元素到主链表中
	void insert(int index, int a)
	{
		if (index < 1 || index > _size + 1)
		{
			return; // 无效的插入位置,直接返回
		}

		LNode* p = head;

		// 移动 p 到要插入位置的前一个节点
		for (int i = 1; i < index; i++)
		{
			p = p->next;
		}

		LNode* tmp = new LNode(a);

		tmp->next = p->next;
		p->next = tmp;
	}

    // 打印主链表
    void printList() {
        MLNode* p = head->next;
        while (p != NULL) {
            cout << p->data << " ";
            p = p->next;
        }
        cout << endl;
    }

    // 打印兄弟链表
    void printSibling() {
        MLNode* p = head->sibling;
        while (p != NULL) {
            cout << p->data << " ";
            p = p->sibling;
        }
        cout << endl;
    }
};

int main() {
	MultiList LB;
	int n, a;
	cin >> n;

	for (int i = 0; i < n; i++) {
		cin >> a;
		LB.insert(i + 1, a);
	}

	LB.printList();

	int t;
	cin >> t;

	for (int i = 0; i < t; i++) {
		int a = LB.change();
		if (a == -1)
			continue;
		LB.printList();
	}

	return 0;
}

注意,在此示例中,我们添加了一个新的成员变量sibling来表示兄弟链表,并在相应的函数进行修改。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9340

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?