#if 1 #include <iostream> #include <stdlib.h> #include <time.h> #include <fstream> #include <string> using namespace std; //類 class List { public: //構造器初始化,生成頭節點 List() { head = new Node; head->next=NULL; } //成員函數 void createList(); void insertList(int data); void travelList(); void input(); int addNode(); void deleteData(int addNum); void ifClear(); void clearList(); private: //數據成員 struct Node { int data; //數據域 struct Node * next; //指針域 } * head;//頭指針 int num;//鏈表元素個數 }; //頭插法生成節點 void List::insertList(int data) { Node * cur=new Node; //插入數據 cur->data=data; //插入節點 cur->next =head->next; head->next=cur; } //調用insertList輸入數據,生成鏈表 void List::input() { cout<<"請輸入鏈表數量長度:"; cin >>num; srand(time(NULL)); for(int i=0;i<num;i++) { insertList(rand()%100); } } //任意位置插入節點 int List::addNode() { int d,idx; cout<<"請輸入你要插入的節點數據:"; cin >>d; cout<<"請輸入你要插入的節點位置: "; cin >>idx; Node *tp=NULL; Node *link=head; //尋找插入位置 if(idx<1||idx>num+1) cout<<"操作非法"<<endl; else { for(int i=0;i<idx;i++) { tp=link; link=link->next; } Node *cur=new Node; tp->next=cur; cur->data=d; cur->next=link; travelList(); return ++num; } } //遍歷鏈表並將數據存入文件 void List::travelList() { ofstream mycout("D:/text.txt"); Node *temp = head->next; //防止頭指針地址改變 while(temp != NULL) { cout<<temp->data<<" "; mycout<<temp->data<<" "; temp=temp->next; } mycout.close(); cout<<endl; } //刪除節點 void List::deleteData(int addNum) { int i,j=0; cout<<"請問您要刪除第幾個數據: "; cin >>i; Node *tp=NULL; Node *link=head;//link為刪除節點后面的一個節點,temp為刪除節點 if(addNum<i||i<0) cout<<"操作非法!!"<<endl; else { while(link->next) { tp=link->next; //第一個節點 j++; if(i==j) //找的刪除的節點 { link->next=tp->next; delete tp; break; } link=link->next; } travelList(); } } //清空鏈表 void List::clearList() { Node *tp = NULL; Node *ph=head->next; while(head->next) { tp=ph; ph=ph->next; delete tp; head->next=ph; } travelList(); cout<<endl; } //詢問是否清空 void List::ifClear() { string i; if(!head->next) { cout<<"鏈表已清空!!!"<<endl; } else { cout<<"是否清空鏈表(是/否):"; cin>>i; if(i=="是") { clearList(); cout<<"鏈表清空完成!!!"<<endl; } else cout<<"鏈表未清空!!!"<<endl; } } void main() { //初始化,生成頭節點 List list; //輸入鏈表長度 list.input(); //遍歷鏈表,並存入文件 list.travelList(); //添加節點並返回總結點數 int addNum=list.addNode(); //刪除節點 list.deleteData(addNum); //是否清空鏈表 list.ifClear(); system("pause"); } #endif
總結:漢字輸入需要用string,在頭文件string中;字符串比較可以直接用比較運算符;