网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月13日漏签0天
c++吧 关注:628,673贴子:2,113,391
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回c++吧
>0< 加载中...

帮忙看下问题出在哪?

  • 只看楼主
  • 收藏

  • 回复
  • smsbismarck
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <iostream.h>

template <class T>
class linear_list
{
public:
virtual int is_empty() = 0;
virtual int length() = 0;
virtual int find(int i, T &x) = 0;
virtual int search(T x) = 0;
virtual int insert(int i, T x) = 0;
virtual int _delete(int i) = 0;
virtual int updata(int i, T x) = 0;
virtual void output(ostream &out) = 0;
virtual int add(T x) = 0;
protected:
int n;
};

template <class T> class single_list;

template <class T>
class node
{
private:
T element;
node<T> *link;
friend class single_list<T>;
};

template <class T>
class single_list:public linear_list<T>
{
public:
single_list()
{
first = NULL;
n = 0;
};
~single_list();
int is_empty();
int length() ;
int find(int i, T &x);
int search(T x) ;
int insert(int i, T x);
int _delete(int i);
int update(int i, T x);
void output(ostream &out) ;
int add(T x);
private:
node<T> *first;
};

template <class T>
single_list<T> :: ~single_list()
{
node<T> *p;
while (first)
{
p = first -> link;
delete first;
first = p;
}
}
template  <class T>
int single_list<T> :: length() 
{
return n;
}
template <class T>
int single_list<T> :: is_empty() 
{
if (n == 0)
return 1;
else
return 0;
}
template <class T>
int single_list<T> :: find(int i, T &x)
{
if (i < 0 || i > n - 1)
{
cout << "Out Of Bounds";
return 0;
}
node<T> *p = first;
for(int j = 0; j < i; j++)
p = p -> link;
x = p -> element;
return 1;
}
template <class T>
int single_list<T> :: search(T x) 
{
node<T> *p = first;
for (int j = 0; p && p -> element != x; j++)
p = p -> link;
if(p)
return j;
return -1;
}
template <class T>
int single_list<T> :: insert(int i, T x)
{
if (i < -1 || i > n-1)
{
cout << "Out Of Bounds";
return 0;
}

node<T> *q = new node<T>;
q -> element = x;
node<T> *p = first;
for(int j = 0; j < i; j++)
p = p -> link;
if (i > -1)
{
q -> link = p -> link;
p -> link = q;
}
else 
{
q -> link = first;
first = q;
}
n++;
return 1;
}
template <class T>
int single_list<T> :: _delete(int i)
{
if (!n)
{
cout << "UnderFlow" << endl;
return 0;
}
if (i < 0 || i > n-1)
{
cout << "Out Of Bounds" << endl;
return 0;
}
node<T> *p = first, *q =first;
for(int j = 0; j < i-1; j++)
q = q -> link;
if (i == 0)
first = first -> link;
else
{
p = q -> link;
q -> link = p -> link;
}
cout << "element:" << p -> element << " will be delete..." << endl;
delete p;
n--;
return 1;
}
template <class T>
int single_list<T> :: update(int i, T x)
{
if (i < 0 || i > n-1)
{
cout << "Out Of Bounds" << endl;
return 0;
}
node<T> *p = first;
for (int j = 0; j < i; j++)
p = p -> link;
p -> element = x; 
return 1;
}
template<class T>
void single_list<T> :: output(ostream &out) 
{
node<T> *p = first;
while(p)
{
out << p -> element << " ";
p = p -> link;
}
out << endl;
}
template<class T>
int single_list<T> :: add(T x)
{
node<T> *p = first, *q = new node<T>;
q -> element = x;

for (int j = 0; j < n - 1; j++)
{
p = p -> link;
}
if (n == 0)
{
p -> element = q -> element;
p -> link = NULL;
}
else
{
p -> link = q;
q -> link = NULL;
}
n++;
return 0;
}


void main()
{
single_list <char> test_list();
char flag, temp, x;
int k;
cout << "判断是否为空链表<Y/N>:" << endl;
if (test_list().is_empty())
cout << "Y" << endl;
else 
cout << "N" << endl;
for(;;)
{
cout << "是否对链表添加元素<Y/N>:" << endl;
cin >> flag ;
if (flag == 'Y' || flag == 'y')
{
cout << "请输入添加的元素:" << endl;
cin >> temp;
test_list().add(temp);
}
else if (flag == 'N' || flag == 'n')
break;
}

cout << "请输入链表待查找元素的位置:";
cin >> k;
test_list().find(k, x);
cout << "第" << k << "个元素是:" << x << endl;

cout << "请输入链表待查找元素:";
cin >> x;
cout << "待查找元素位置是第" << test_list().search(x) << "个";

cout << "请输入要删除元素的位置:";
cin >> k;
test_list()._delete(k);

cout << "请输入要插入元素的位置:";
cin >> k;
cout << "元素的值:";
cin >> x;
test_list().insert(k, x);


}



  • 柳轻烟
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
调式就有问题,暂不清楚…


2025-08-13 23:51:35
广告
不感兴趣
开通SVIP免广告
  • 221.226.208.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
额...没人知道吗?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示