具有head头节点的单链表(头插法与尾插法)

本文展示了如何使用C++模板类实现单链表,并提供了头插法和尾插法添加元素的函数,以及打印链表的方法。在示例中,首先用头插法插入(2,3,4),然后用尾插法插入(6,7,8),最终输出了操作后的链表结构。
摘要由CSDN通过智能技术生成
#include<iostream>
//单链表
using namespace std;
template <typename Elemtype>
struct Node {
	Elemtype data;
	Node* next;
	Node() {
		//默认构造函数
		next = NULL;
	}
	Node(Elemtype c) {
		// 自定义构造函数
		data= c;
		next = NULL;
	}
};

template <typename Elemtype>
struct Linklist {
	typedef Node<Elemtype>Node;
	Node head;
	int length= 0  ;
	
	void add(Elemtype e) {                             
		// 添加结点
		Node* q = new Node(e); 
		//q->next = p;
		q->next = head.next;
		head.next = q;
		length++;

	}
	void tailadd(Elemtype e) {
		//尾插法
		Node* p = new Node(e); // 创建好新的结点信息
		
		Node* tail = head.next;
		while (tail->next) {
			tail = tail->next; //指针移动到链表最后
		}
		p->next = tail->next;
		tail->next = p;// 结点加入到末尾
		length++;
	}
	void print() {
		Node* p = head.next; //首元节点开始输出
		cout << "head→";
		while (p) {
			cout << p->data << "→";
			p = p->next;
		}
		cout << "^" << endl;
	}
};

int main() {
	Linklist<int>L;
	for (int i = 2; i < 5; i++) {
		L.add(i);
	}
	cout << "(2,3,4) 头插法:" << endl;
	L.print();


	for (int i = 6; i < 9; i++) {
		L.tailadd(i);
	}
	cout << "(6,7,8) 尾插法:" << endl;
	L.print();
	return 0;
}

输出结果是:

(2,3,4) 头插法:
head→4→3→2→^
(6,7,8) 尾插法:
head→4→3→2→6→7→8→^

记得关注哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值