有序單鏈表插入演算法
阿新 • • 發佈:2019-01-10
#include <iostream> #include<list> using namespace std; template <class T> struct Node { T data; Node<T>* next; }; template <class T>//尾插建立迴圈單鏈表 Node<T>* creat_back( Node<T> * first,int len) { Node<T>* r=first; for( int i=0; i<len; i++) { int data; cin>>data; Node<T>* pnew=new Node<T>; pnew->data=data; pnew->next=r->next; r->next=pnew; r=pnew; } r->next=NULL; return first; } template <class T>//輸出連結串列迴圈單鏈表 void show(Node<T>* first) { Node<T>* p=first->next; while(p!=NULL) { cout<<p->data<<' '; p=p->next; } cout<<endl<<endl; } template<class T> void Insert(Node<T>* first,int x)//有序單鏈表的插入 { Node<T>* s=new Node<T>; s->data=x; Node<T>* p=first; while(p->next&&p->next->data<x) p=p->next; s->next=p->next; p->next=s; } int main() { Node<int >* first=new Node<int>; first=creat_back(first,5); show(first); Insert(first,2); show(first); return 0; }