#include
#include
#define ListSize 100 //表空间的大小可根据实际需要而定,这里假设为100
typedef int DataType; //DataType的类型可根据实际情况而定,这里假设为int
typedef struct
{
DataType data[ListSize];//向量data用于存放表结点
int length;//当前的表长度
}OrderList;
void InitList(OrderList *L)
{//顺序表的初始化即将表的长度置为0
L->length=0;
}
int LocateNode(int data,OrderList *L)
{
int i;
for(i=0;i
{
if(data==L->data[i])
return i+1;
}
return -1;
}
int InsertNode(int data,OrderList *L)
{
int n=1;
int i,j;
if(L->length==0)
{
L->data[0]=data;
L->length++;
return n;
}
else if(L->length==ListSize)
{
printf("failed!Space is full\n");
return -1;
}
else
{
for(i=0;i
{
if(data>L->data[i])
{
for(j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=data;
n=i+1;
L->length++;
return n;
}
}
L->data[i]=data;
n=i+1;
L->length++;
return n;
}
}
void main()
{
OrderList L;
int i,x,temp;
InitList(&L);
for(i=0;i<10;i++)
{
temp=rand()%100;
InsertNode(temp,&L);
}
puts("顺序表的内容:");
temp=0;
for(i=0;i<10;i++)
{
printf("%-4d",L.data[i]);
temp++;
if(temp==10)
{
temp=0;
puts("");
}
}
puts("定位值为x的元素的位置,请输入x:");
scanf("%d",&x);
temp=LocateNode(x,&L);
if(temp!=-1)
printf("x的位置:第%d位置\n",temp);
else
{
puts("没有找到值x的位置,插入此值......");
temp=InsertNode(x,&L);
if(temp!=-1)
{
printf("插入到位置:第%d位置\n",temp);
puts("插入后顺序表的内容:");
temp=0;
for(i=0;i
printf("%-4d",L.data[i]);
temp++;
if(temp==10)
{
temp=0;
puts("");
}
}
puts("");
}
}
}
假设用int数组作为存储结构,位置从1开始 p[i+1])
int find(int *p,int len,int x)//p为数组,len数组长度,x为目标元素
{
int i=0;
while(i
if(i
//x不存在的话
if (x>p[0]) return 1;//如果x大于第一个元素,插入位置为第1个
if (x
for(i=0;i
return i+2;
}
int main()//这里用了c++代码
{
int a[]={10,8,8,6,4,1};
int*p=a;
int len=sizeof(a)/sizeof(a[0]);
for(int j=11;j>=0;j--)
{
int m=find(p,len,j);
for(int k=0;k
return 0;
}