数据结构第四章链表作业(C++)

这篇博客介绍了如何使用C++实现带表头结点的单链表操作,包括定位第i个结点、查找最大值、倒置链表等功能。其中,locate函数用于在链表中找到第i个结点,max函数遍历链表找到最大值,reverse函数则将链表元素顺序反转。此外,还提到了tidyup和mergelists函数,分别用于删除重复元素和合并两个有序链表。
摘要由CSDN通过智能技术生成

 以带表头结点的单链表为例,实现的几个函数功能:

(1) 建立函数create:根据一维数组a[n]建立一个单链表,使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂性为O(n)。(此题函数已经提供,不用做)

(2) 定位函数locate:在单链表中寻找第i个结点。若找到,则函数返回第i个结点的地址;若找不到,则函数返回NULL。

(3) 求最大值函数max:通过一趟遍历在单链表中确定值最大的结点。

(4) 统计函数number:统计单链表中具有给定值x的所有元素。(此题可不做)

(5) 倒置函数reverse: 倒置线性表中元素的顺序。

(6) 整理函数tidyup:在非递减有序的单链表中删除值相同的多余结点。

(7) 合并两个链表mergelists: 输入的链表按照其元素顺序从小到大排序,输出的链表也要求按照元素的大小顺序排列。

#include <iostream>
using namespace std;

template <typename E> 
class Link {
public:
  E element;      
  Link *next;       
  Link(const E& elemval, Link* nextval =NULL)
    { element = elemval;  next = nextval; }
  Link(Link* nextval=NULL) { next = nextval; }
};


template <typename E>
Link <E> *create(E a[], int n)
//建立函数create:根据一维数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值