
1、 输入n个不为零的整数作为节点元素值,遇到0代表输入结束(不创建元素值为0的节点),创建有序链表。输出整个链表。
2、 输入一个整数,将该数插入到有有序链表相应位置。输出整个链表。
3、 输入一个整数,在链表中进行搜索,输出其在链表中的第一个出现的位置。如果不存在输出0。
4、 再一次输入一个整数,在链表中进行搜索,输出其在链表中的第一个出现的位置。如果不存在输出0。
5、 再一次输入n个不为零的整数作为节1点元素值,遇到0代表输入结束(不创建元素值为0的节点),创建一个新的有序链表。输出整个链表。
6、 使用链表遍历器实现上面两个有序链表的合并,输出合并后的有序链表。
7、 提示:注意单节点链表的测试。
#includeusing namespace std; struct chainNode { //数据成员 int element; chainNode* next; //专门给头结点准备的构造函数 chainNode(){ element = NULL; next = NULL; } chainNode(const int& element) { this->element = element; next = NULL; } chainNode(const int& element, chainNode* next) { this->element = element; this->next = next; } }; //链表 class chain { public: chain(); void youXuInsert(int zhi); void insert(int zhi, int position); void deleteNode(); void find(int zhi); void print(); public: chainNode* head;//头结点 int listSize;//元素个数 }; chain::chain() { head = new chainNode; listSize = 0; } //有序插入 void chain::youXuInsert(int zhi) { chainNode* p = head; while (p->next&&p->next->element next; } p->next = new chainNode(zhi,p->next); listSize++; } //指定位置插入 void chain::insert(int zhi, int position) { chainNode* p = head; if (position <= 0 || position > listSize+1) { return; } for (int i = 0; i < position-1; i++) { p = p->next; } p->next = new chainNode(zhi, p->next); listSize++; } //搜索一个元素第一次出现的位置 void chain::find(int zhi) { int index = 1; chainNode *p = head->next; while (p) { if (p->element == zhi) { cout << index << endl; return; } index++; p = p->next; } cout << 0 << endl; } void chain::print() { chainNode *p = head->next; if (p) { cout << p->element ; p = p->next; while (p) { cout << "," << p->element; p=p->next; } cout << endl; } } void heBing(chain& chain1,chain& chain2) { chainNode* p = chain1.head; chainNode* q = chain2.head; chainNode* temp; while (p->next && q->next) { if (p->next->element < q->next->element) { p = p->next; } else { temp = q->next; q->next = q->next->next; temp->next = p->next; p->next = temp; p = temp; } } if (q->next) { p->next = q->next; } chain1.print(); } int main() { chain chain1; chain chain2; //------------------------------------------- cout << "Input1" << endl; int index=0; int zhi; cin >> zhi; while (zhi) { chain1.youXuInsert(zhi); cin >> zhi; index++; } chain1.listSize = index; cout << "Output1" << endl; chain1.print(); //-------------------------------------------------- cout << "Input2" << endl; cin >> zhi; chain1.youXuInsert(zhi); cout << "Output2" << endl; chain1.print(); //--------------------------------------------------- cout << "Input3" << endl; cin >> zhi; cout << "Output3" << endl; chain1.find(zhi); //----------------------------------------------------- cout << "Input4" << endl; cin >> zhi; cout << "Output4" << endl; chain1.find(zhi); //------------------------------------------------------ cout << "Input5" << endl; int index2 = 0; cin >> zhi; while (zhi) { chain2.youXuInsert(zhi); cin >> zhi; index2++; } chain2.listSize = index2; cout << "Output5" << endl; chain2.print(); heBing(chain1, chain2); cout << "End" << endl; return 0; }
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)