C++实现链表---可直接运行通过

 main.cpp
1
#include "myDataBase.h" 2 3 int main() 4 { 5 int i =0; 6 myDataBase::GetInstance().createDataBaseList(); 7 for(i=0;i<3 ; ++i) 8 { 9 string str; 10 cin >> str; 11 myDataBase::GetInstance().InsertListDataTail(i,str); 12 } 13 myDataBase::GetInstance().ShowDataBaseList(); 14 15 return 0; 16 }


 1 #ifndef _MYDATABASE_H
 2 #define _MYDATABASE_H            
 3 
 4 #include <cstddef>//NULL 需要使用的头文件
 5 #include <iostream>
 6 #include <strings.h>
 7 using namespace std;
 8 
 9 //Data content
10 class dataContent{
11     public:
12                int key;
13             string name;
14 };
15 
16 /*存储连表的class*/
17 class node{
18     public:
19         //数据
20              dataContent data ;
21         //int data;
22         //指向下一个数据区的指针    
23              struct node *Next;
24  };
25 
26 /*Data content
27 class dataContent{
28     int key;
29     string name;    
30 };*/
31 
32 
33 /*对连表操作的class*/
34 class  myDataBase{
35     public:
36         //构造函数
37         myDataBase();
38         //析构函数
39         ~myDataBase();
40         //创建链表
41         void createDataBaseList();
42         //show连表里面的数据
43         void ShowDataBaseList();
44         //数据的尾部插入操作
45         bool InsertListDataTail(int data,std::string & name); 
46         //获取类的句柄
47         static myDataBase& GetInstance();
48 
49     private:
50         //定义了头节点
51         node *pNode;
52 };
53 
54 #endif



1
#include "myDataBase.h" 2 3 myDataBase::myDataBase() 4 { 5 pNode = NULL; 6 } 7 8 void myDataBase::createDataBaseList() 9 { 10 pNode = new node; 11 12 pNode->data.key=0; 13 pNode->Next = NULL; 14 15 return ; 16 } 17 18 19 bool myDataBase::InsertListDataTail(int data, std::string & name) 20 { 21 node * subNode = new node; 22 if(subNode == NULL) 23 { 24 cout<< "subNode create error!"<<endl; 25 26 return false; 27 } 28 29 subNode->data.key = data; 30 subNode->data.name = name; 31 subNode->Next = NULL; 32 33 node *temNode = pNode; 34 35 while(temNode->Next != NULL) 36 { 37 temNode = temNode->Next; 38 } 39 40 temNode->Next = subNode; 41 42 return true; 43 } 44 45 46 void myDataBase::ShowDataBaseList() 47 { 48 node * tempNode = pNode; 49 if(tempNode == NULL) 50 { 51 return ; 52 } 53 54 do{ 55 if( (tempNode = tempNode->Next ) == NULL ) 56 { 57 break; 58 } 59 else 60 { 61 cout<<"key: "<<tempNode->data.key<<"\t name :"<<tempNode->data.name<<endl; 62 } 63 }while(tempNode->Next); 64 65 return ; 66 } 67 68 69 static myDataBase *m_instance = NULL; 70 71 myDataBase &myDataBase::GetInstance() 72 { 73 if(m_instance == NULL) 74 { 75 m_instance = new myDataBase; 76 if(m_instance == NULL) 77 { 78 cout<< "create myDataBase class err!"<<endl; 79 exit(0); 80 } 81 } 82 return *m_instance; 83 }

 

1 运行结果显示
2 ****@****:~/桌面/myDataBaseList/myDataBaseList$ ./main 
3 i
4 love
5 u
6 key: 0     name :i
7 key: 1     name :love
8 key: 2     name :u
9 zhou_jiang@zhoujiang:

 

posted @ 2020-09-29 19:46  怎因一双媚眼惹尘埃  阅读(180)  评论(0编辑  收藏  举报