IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 线性表的链式实现——单链表 -> 正文阅读

[数据结构与算法]线性表的链式实现——单链表

template<typename DataType>
class LinkList{
public:
	LinkList();
	LinkList(DataType a[],int n);
	~LinkList();
	int Length();
	DataType Get(int i);
	int Locate(DataType x);
	void Insert(int i,DataType x);
	DataType Delete(int i);
	int Empty();
	void PrintList();
}

无参构造

template <typename DataType>
LinkList<DataType>::LinkList(){
	first=new Node<DataType>;
	first->next=nullptr;
}

判空

template<typename DataType>
int LinkList<DataType>::Empty(){
	if(first->next==nullptr)
		return 1;
	return 0;
}

遍历

template <typename DataType>
void LinkList<DataType>::PrintList(){
	Node<DataType> *p=first->next;
	while(p!=nullptr){
		cout<<p->data<<"\t";
		p=p->next;
	}
	cout<<endl;
}

求单链表长度

template <typename DataType>
int LinkList<DataType>::Length(){
	Node<DataType> *p=first->next;
    int count=0;
	while(p!=nullptr){
		p=p->next;
        count++;
	}
	return count;
}

按位查找

template <typename DataType>
DataType LinkList<DataType>::Get(int i){
	Node<DataType> *p=first->next;
	int count=1;
	while(p!=nullptr&&count<i){
		p=p->next;
		count++;
	}
	if(p==nullptr) throw"查找位置错误"
	else return p->data;
}

按值查找

template <typename DataType>
int LinkList<DataType>::Locate(DataType x){
	Node<DataType> *p=first->next;
	int count=1;
	while(p!=nullptr){
		if(p->data==x){
			return count;
		}esle{
			p=p->next;
			count++;
		}
	}
	return 0;
}

插入操作

template <typename DataType>
void LinkList<DataType>::Insert(int i,DataType x){
	Node<DataType> *p=first,*s=nullptr;
	int count=0;
	while(p!=nullptr&&count<i-1){
		p=p->next;
		count++;
	}
	if(p==nullptr) throw"插入位置错误";
	else{
		s=new Node<DataType>;
		s->data=x;
		s->next=p->next;
		p->next=s;
	}
}

建立单链表

头插法

template <typename DataType>
LinkList<DataType>::LinkList(DataType a[],int n){
	first=new Node<DataType>;
	first->next=nullptr;
	for(int i=0;i<n;i++){
		Node<DataType> *s=nullptr;
		s=new Node<DataType>;
		s->data=a[i];
		s->next=first->next;
		first->next=s;
	}
}

尾插法

template <typename DataType>
LinkList<DataType>::LinkList(DataType a[],int n){
	first=new Node<DataType>;
	Node<DataType> *p=first,*s=nullptr;
	for(int i=0;i<n;i++){
		s=new Node<DataType>;
		s->data=a[i];
		p->next=s;
		p=s;
	}
	p->next=nulptr;
}

删除操作

template <typename DataType>
DataType LinkList<DataType>::Delete(int i){
	DataType x;
	Node<DataType> *p=first,*q=nullptr;
	int count=0;
	while(p!=nullptr&&count<i-1){
        p=p->next;
        count++;
    }
    if(p==nullptr||p->next==nullptr){
        throw"删除位置错误"
    }
    else{
        q=p->next;
        x=q->data;
        p->next=q->next;
        delete q;
        return x;
    }
}
	

析构函数

```c++
template <typename DataType>
LinkList<DataType>::~LinkList(){
	Node<DataType> *p=first;
	while(first!=nullptr){
		first=first->next;
		delete p;
		p=first;
	}
}
```

完整代码


  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:28:58  更:2021-10-06 12:29:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 9:49:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码