链表模板

本文介绍了一个通用模板类实现的链表及其插入与删除操作的方法。该链表支持任意类型的数据,并提供灵活的插入功能,包括指定位置插入及尾部追加,同时也实现了按位置删除的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<stdio.h>
using namespace std;
template<class T,int size=5>
class link
{
  public:
 T s[size];
 int top;
  link()
  {
   top=0;
  }
 void insert(T &n,int m);
 void insert(T &n);
 T del(int m);
};

template<class T,int size> void link<T,size>::insert(T &n,int m)
{
 if(top<size)
 {
  if(m<top)
  {
   top++;
   for(int i=top-1;i>m;i--)
   {
    s[i]=s[i-1];
   }
   s[m]=n;
  }
 }
  else
   cout<<"链表已经满了!/007/n";
}

template<class T,int size> void link<T,size>::insert(T &n)
{
 if(top<size)
 {
   s[top]=n;
   top++;
 
 }
  else
   cout<<"链表已经满了!/007/n";
}

template<class T,int size> T link<T,size>::del(int m)
{
 T x;
 if(m<=top)
 {
   x=s[m-1];
   for(int i=m-1;i<top-1;i++)
    s[i]=s[i+1];
   top--;
   return x;
 }
 else
  cout<<"输入错误!/007/n";
}

void main()
{
 int i,n,m=1;
 link<int> num;
 cout<<"为链表输入值!!"<<endl;
 cin>>n;
 while(n)
 {
  num.insert(n);
  cin>>n;
 }
cout<<"输入完毕!"<<"/n"<<"请输入要插入的值和位置"<<endl;
 cin>>n>>m;
 while(m>=0)
 {
   num.insert(n,m);
    cin>>n>>m;
 }
 cout<<"输入完毕!"<<"/n"<<"遍历链表"<<endl;
 for(i=0;i<num.top;i++)
  cout<<num.s[i]<<" ";
 cout<<endl;
 cout<<"输入你要删除的位置"<<endl;
 cin>>m;
 num.del(m);
for(i=0;i<num.top;i++)
  cout<<num.s[i]<<" ";
}

面向对象程序设计课程作业 1. 请创建一个数据类型为T的链表模板List,实现以下成员函数: 1) 默认构造函数List(),将该链表初始化为一个空链表(10分) 2) 拷贝构造函数List(const List& list),根据一个给定的链表构造当前链表(10分) 3) 析构函数~List(),释放链表中的所有节点(10分) 4) Push_back(T e)函数,往链表最末尾插入一个元素为e的节点(10分) 5) operator<<()友元函数,将链表的所有元素按顺序输出(10分) 6) operator=()函数,实现两个链表的赋值操作(10分) 7) operator+()函数,实现两个链表的连接,A=B+C(10分) 2. 请编写main函数,测试该类模板的正确性: 1) 用List模板定义一个List类型的模板类对象int_listB,从键盘读入m个整数,调用Push_back函数将这m个整数依次插入到该链表中;(4分) 2) 用List模板定义一个List类型的模板类对象int_listC,从键盘读入n个整数,调用Push_back函数将这n个整数依次插入到该链表中;(4分) 3) 用List模板定义一个List类型的模板类对象int_listA,调用List的成员函数实现A = B + C;(4分) 4) 用cout直接输出int_listA的所有元素(3分) 5) 用List模板定义List类型的模板类对象double_listA, double_listB, double_listC,重复上述操作。(15分) 3. 输入输出样例: 1) 输入样例 4 12 23 34 45 3 56 67 78 3 1.2 2.3 3.4 4 4.5 5.6 6.7 7.8 2) 输出样例 12 23 34 45 56 67 78 1.2 2.3 3.4 4.5 5.6 6.7 7.8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值