题目:在升序线性表中插入一个数据,使新的线性表仍是升序排列
数组:
#include<iostream> using namespace std; int main(){ int ary[1005]; int n,m,i,tmp,flag=0; cin>>n; for(i=0;i<n;i++){ cin>>ary[i]; } cin>>m; for(i=0;i<n-1;i++){ if(m<ary[0]){ tmp=0; flag=1; break; } else if(m>=ary[i]&&m<=ary[i+1]){ tmp=i+1; flag=1; break; } } if(flag){ for(i=n;i>=tmp;i--){ ary[i]=ary[i-1]; } ary[tmp]=m; } else{ ary[n]=m; } cout<<ary[0]; for(i=1;i<n+1;i++){ cout<<" "<<ary[i]; } cout<<endl; return 0; }
链表:
#include<iostream> #include<stdlib.h> using namespace std; int main(){ int n,m,i; typedef struct node{ int num; node* next; }node; node *head,*p,*q,*r; cin>>n; head=(node*)malloc(sizeof(node)); q=head; for(i=0;i<n;i++){ p=(node*)malloc(sizeof(node)); cin>>(p->num); q->next=p; q=p; } q->next=NULL; cin>>m; r=head->next; if(m<=(r->num)){ p=(node*)malloc(sizeof(node)); p->num=m; p->next=r; head->next=p; } else if(m>=(q->num)){ p=(node*)malloc(sizeof(node)); p->num=m; p->next=NULL; q->next=p; } else{ q=head->next; r=q->next; while(r){ if(m>(q->num)&&m<=(r->num)){ p=(node*)malloc(sizeof(node)); p->num=m; p->next=r; q->next=p; break; } else{ q=r; r=r->next; } } } r=head->next; while(r){ if(r->next==NULL){ cout<<r->num<<endl; break; } else{ cout<<r->num<<" "; r=r->next; } } return 0; }