编写单向链表
来源:互联网 发布:windows允许ruby 编辑:程序博客网 时间:2024/05/22 06:07
题目:
现编写一个简单的单向链表类CList:
按照以下类和对象的关系,在CTest类中包含两个CList的对象:
在CTest::Menu函数中打印“1、插入,2、打印,3、显示长度”等菜单。
可以随时选择对2个链表中的任意一个插入或打印。
typedef int DATA;
struct SNode
{
DATA data;
SNode* pNext;
};
class CList
{
SNode *m_pHead;
public:
CList();
~CList();
void AddHead(DATA d) ;
void Print();
int GetCount();
void RemoveAll();
};
class CTest
{
CList m_list1,m_list2;
public:
int Menu();
void Input();
};
void CTest::Input()
{
cout << "请输入一个数字:" << endl;
DATA d;
cin >> d;
cout <<"请选择一个链表:(1-2)"<<endl;
int i = 0;
cin >>i;
if(i == 1)
{
m_list1.AddHead(d);
cout << "链表1总共有:"<<m_list1.GetCount() << "条数据!"<<endl;
m_list1.Print();
}
if(i == 2)
{
m_list2.AddHead(d);
cout << "链表2总共有:"<<m_list2.GetCount() << "条数据!"<<endl;
m_list2.Print();
}
}
答案:
#include <iostream>using namespace std;typedef int DATA;struct SNode{DATA data;SNode* pNext;};class CList{SNode* m_pHead;public:CList(){m_pHead = NULL;}~CList(){SNode *p = m_pHead;SNode *p1;while(p){p1 = p;p = p->pNext;delete p1;}}void AddHead(DATA d){SNode* p = new SNode();p->data = d;p->pNext = m_pHead;m_pHead = p;}void Print(){SNode* p = m_pHead;while(p){cout<<p->data<<endl;p = p->pNext;}}int GetCount(){int i = 0;SNode*p = m_pHead;while(p){i++;p = p->pNext;}return i;}void RemoveAll(){SNode* p = m_pHead;while(p){delete p;p=p->pNext;}}};class CTest{CList m_list1, m_list2;public:int Menu();void Input();};int CTest::Menu(){cout<<"**********1:插入**********"<<endl;cout<<"**********2:打印**********"<<endl;cout<<"**********3:显示长度******"<<endl;cout<<"请输入一个选项"<<endl;int m;cin>>m;return m;}void CTest::Input(){while (true){cout<<"请输入一个数字:"<<endl;DATA d;cin>>d;cout<<"请选择一个链表:(1 - 2)"<<endl;int i = 0;cin>>i;if (1 == i){int key = Menu();switch (key){case 1:m_list1.AddHead(d);break;case 3:cout<<"链表1一共有:"<<m_list1.GetCount()<<"个数据"<<endl;break;case 2:m_list1.Print();break;}}if (2 == i){int key = Menu();switch (key){case 1:m_list2.AddHead(d);break;case 3:cout<<"链表2一共有:"<<m_list2.GetCount()<<"个数据"<<endl;break;case 2:m_list2.Print();break;}}if (0 == i){return;}}}int main(){CTest test;test.Input();return 0;}
- 编写单向链表
- 单向链表的编写
- 单向链表编写代码
- 如何编写自己单向链表(c语言)
- 单向链表
- 单向链表倒序
- 单向链表
- 单向链表逆转
- 逆转单向链表
- 单向链表反转
- 单向链表
- 单向链表(ZT)
- 反转单向链表
- 单向链表反转
- 单向链表
- 创建单向链表
- 单向链表反转
- 单向链表
- Java的23种设计模式
- C++ 智能指针详解
- [C++对象模型][3]指针与数组
- 浅析Log Buffer
- LeetCode:Median of Two Sorted Arrays
- 编写单向链表
- Thrift 文件的格式及可用的数据类型
- java 解析xml字符串(dom4j)
- c语言起泡排序
- [C++对象模型][4]指针与字符串
- linux shell基本文件处理
- Hadoop最大值的算法中出现的错误(strToDouble)
- linux的进程散列表
- ajax 同步和异步的区别