/******************************** * * c++程序設計實踐指導 * * 1.4正整數轉化爲字符串 * *********************************/ #include <iostream> #include <string> using namespace std; class STR { struct LinkNodeA //單鏈表節點結構 { short int data; LinkNodeA *next; }; LinkNodeA *headA; struct LinkNodeB { char data; LinkNodeB *next; }; LinkNodeB *headB; public: STR(string x) //構造函數,用x初始化num { headA = new LinkNodeA; headA->data = 0; headA->next = NULL; LinkNodeA *p, *q; q = headA; for(string::size_type i = 0; i < x.size(); i++) { p = new LinkNodeA; p->data = x[i] - 48; //將string字符串中的字符逐個轉換爲int型,存入單鏈表1中 p->next = NULL; q->next = p; q = p; } } void itoa(); //實現轉換功能 void show() //在屏幕顯示 { LinkNodeA *p = headA->next; LinkNodeB *q = headB->next; cout << "下面是單鏈表1中各個節點存放的元素值,都是int型:" << endl; while(p->next) { cout << p->data; p = p->next; } cout << p->data; cout << endl; cout << "下面這個則是單鏈表2中各個節點存放的元素值,都是char型:" << endl; while(q->next) { cout << q->data; q = q->next; } cout << q->data; cout << endl; } }; void STR::itoa() //轉換 { headB = new LinkNodeB; headB->data = '0'; headB->next = NULL; LinkNodeA *point = headA->next; LinkNodeB *p, *q; q = headB; while(point) { p = new LinkNodeB; p->data = point->data + 48; //將int型字符轉化爲char型字符,與單鏈表1中元素一一對應存入單鏈表2中 p->next = NULL; q->next = p; q = p; if(point->next) point = point->next; else break; } } int main() { string b; //string類型提供方便的輸入功能,可以輸入任意長度的字符串,也能夠是超長整數 cin >> b; STR str(b); str.itoa(); str.show(); system("pause"); return 0; }