这是一个数据结构中的问题:

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:21:40
已知一个顺序表中的各结点值是从小到大有序的,设计一个算法,插入一个值为x的结点,使顺序表中的结点仍然是从小到大有序。
最是能写出程序!!谢谢了!1

以后应该自己动手写写...

#include <iostream.h>
#include <stdlib.h>

struct nlist{
int *list;
int size;
int maxsize;
};

//初始化
void initlist(nlist &l){
l.maxsize=20;
l.list=new int[l.maxsize];
l.size=0;
}

//清空
void clearlist(nlist &l){
if(l.list!=NULL) {
delete []l.list;
l.list=NULL;
}
l.maxsize=0;
l.size=0;
}

//插入
bool insertlist(nlist &l,int x,int pos){
int i;
if(pos<-1) return false;
if(pos==-1) pos=l.size+1;
else if(pos==0)
{ for(i=0;i<l.size;i++)
if(x<l.list[i])break; pos=i+1;}
for(int j=l.size-1;j>=pos-1;j--)
l.list[j+1]=l.list[j];
l.list[pos-1]=x;
l.size++;
return true;
}

//遍历线性表
void traverlist(nlist &l){
for (int i=0;i<l.size;i++)
cout<<l.list[i]<<" ";
cout<<endl