smsbismarck smsbismarck
关注数: 0 粉丝数: 3 发帖数: 241 关注贴吧数: 0
帮忙看下问题出在哪? #include template 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 single_list;template class node{private:T element;node *link;friend class single_list ;};template class single_list:public linear_list {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 *first;};template single_list :: ~single_list(){node *p;while (first){p = first -> link;delete first;first = p;}}template int single_list :: length() {return n;}template int single_list :: is_empty() {if (n == 0)return 1;elsereturn 0;}template int single_list :: find(int i, T &x){if (i < 0 || i > n - 1){cout << "Out Of Bounds";return 0;}node *p = first;for(int j = 0; j < i; j++)p = p -> link;x = p -> element;return 1;}template int single_list :: search(T x) {node *p = first;for (int j = 0; p && p -> element != x; j++)p = p -> link;if(p)return j;return -1;}template int single_list :: insert(int i, T x){if (i < -1 || i > n-1){cout << "Out Of Bounds";return 0;}node *q = new node ;q -> element = x;node *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 int single_list :: _delete(int i){if (!n){cout << "UnderFlow" << endl;return 0;}if (i < 0 || i > n-1){cout << "Out Of Bounds" << endl;return 0;}node *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 int single_list :: update(int i, T x){if (i < 0 || i > n-1){cout << "Out Of Bounds" << endl;return 0;}node *p = first;for (int j = 0; j < i; j++)p = p -> link;p -> element = x; return 1;}template void single_list :: output(ostream &out) {node *p = first;while(p){out << p -> element << " ";p = p -> link;}out << endl;}template int single_list :: add(T x){node *p = first, *q = new node ;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 test_list();char flag, temp, x;int k;cout << "判断是否为空链表 :" << endl;if (test_list().is_empty())cout << "Y" << endl;else cout << "N" << endl;for(;;){cout << "是否对链表添加元素 :" << 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);}
帮忙看下问题出在哪? #include template 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 single_list;template class node{private:T element;node *link;friend class single_list ;};template class single_list:public linear_list {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 *first;};template single_list :: ~single_list(){node *p;while (first){p = first -> link;delete first;first = p;}}template int single_list :: length() {return n;}template int single_list :: is_empty() {if (n == 0)return 1;elsereturn 0;}template int single_list :: find(int i, T &x){if (i < 0 || i > n - 1){cout << "Out Of Bounds";return 0;}node *p = first;for(int j = 0; j < i; j++)p = p -> link;x = p -> element;return 1;}template int single_list :: search(T x) {node *p = first;for (int j = 0; p && p -> element != x; j++)p = p -> link;if(p)return j;return -1;}template int single_list :: insert(int i, T x){if (i < -1 || i > n-1){cout << "Out Of Bounds";return 0;}node *q = new node ;q -> element = x;node *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 int single_list :: _delete(int i){if (!n){cout << "UnderFlow" << endl;return 0;}if (i < 0 || i > n-1){cout << "Out Of Bounds" << endl;return 0;}node *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 int single_list :: update(int i, T x){if (i < 0 || i > n-1){cout << "Out Of Bounds" << endl;return 0;}node *p = first;for (int j = 0; j < i; j++)p = p -> link;p -> element = x; return 1;}template void single_list :: output(ostream &out) {node *p = first;while(p){out << p -> element << " ";p = p -> link;}out << endl;}template int single_list :: add(T x){node *p = first, *q = new node ;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 test_list();char flag, temp, x;int k;cout << "判断是否为空链表 :" << endl;if (test_list().is_empty())cout << "Y" << endl;else cout << "N" << endl;for(;;){cout << "是否对链表添加元素 :" << 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);}实现:用 C++ 编程实现一个模板链表类,并且简单测试其各种服务。 要求: a. 链表节点是一个类(或者结构) b. 实现服务包括如下: 链表是否位空; 链表长度; 寻找链表中的第 k 个元素,并返回其值 ; 寻找元素 x ,如果发现 x ,则返回 x 的地址(在链表中的位置) ; 从链表中删除第 k 个元素,并且返回其值 ; 在第 k 个元素之后插入元素 x; 将链表所有元素送至输出流的服务 ; 重载输出流操作符 < <; 在链表尾部添加一个元素 ; 删除链表中的所有节点 ; 实现中必须考虑对一些异常的处理,同时我们必须保证在无法实现服务操作时程序仍然可以正确运行。
初级C++程序.请高手改下 实现功能:1. 用 C++ 编程实现一个模板链表类,并且简单测试其各种服务。 要求: a. 链表节点是一个类(或者结构) b. 实现服务包括如下: 链表是否位空; 链表长度; 寻找链表中的第 k 个元素,并返回其值 ; 寻找元素 x ,如果发现 x ,则返回 x 的地址(在链表中的位置) ; 从链表中删除第 k 个元素,并且返回其值 ; 在第 k 个元素之后插入元素 x; 将链表所有元素送至输出流的服务 ; 重载输出流操作符 < <; 在链表尾部添加一个元素 ; 删除链表中的所有节点 ; 实现中必须考虑对一些异常的处理,同时我们必须保证在无法实现服务操作时程序仍然可以正确运行。 我的源代码:#include template 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 single_list;template class node{private:T element;node *link;friend class single_list ;};template class single_list:public linear_list {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 clear();void output(ostream &out) ;int add(T x);ostream &operator <<(ostream &out, single_list &obj);private:node *first;};template single_list :: ~single_list(){node *p;while (first){p = first -> link;delete first;first = p;}}template int single_list :: length() {return n;}template int single_list :: is_empty() {if (n == 0)return 1;elsereturn 0;}template int single_list :: find(int i, T &x){if (i < 0 || i > n - 1){cout << "Out Of Bounds";return 0;}node *p = first;for(int j = 0; j < i; j++)p = p -> link;x = p -> element;return 1;}template int single_list :: search(T x) {node *p = first;for (int j = 0; p && p -> element != x; j++)p = p -> link;if(p)return j;return -1;}template int single_list :: insert(int i, T x){if (i < -1 || i > n-1){cout << "Out Of Bounds";return 0;}node *q = new node ;q -> element = x;node *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 int single_list :: _delete(int i){if (!n){cout << "UnderFlow" << endl;return 0;}if (i < 0 || i > n-1){cout << "Out Of Bounds" << endl;return 0;}node *p = first, *q =first;for(int j = 0; j < i-1; j++)q = q -> link;if (i == 0)first = first -> link;
1 下一页