/*
1、线性表练习
(1)从给定顺序表A中删除元素值在x到y(x<=y)之间的所有元素,效率要求较高。
*/
int def(vector A,int n,ElemType x,ElemType y)
{
int i=0,k=0;
while(i<0)
{
if(A[i]>=x&&A[i]<=y)
k++;
else
A[i-k]=A[i];
i++;
}
return n-k;
}
/*
(2)用不多于3n/2的平均比较次数,在一个顺序表A中找出最大的和最小的值。
*/
void maxmin(vector A,int i)
{
int max,min, i;
max=A[0];min=A[0];
if(A[i]>max)
max=A[i];
else if(A[i]<min)
min=A[i];
printf("max=%d,min=%d\n",max,min);
}
/*
(3)在无头结点的动态单链表上实现线性表插入操作INSERT(L,i,b),并且和带头节点的动态单链表上实现的相同操作进行比较。
*/
void Insert(LinkList &L,int i,ElemType e)
{
if(!L)
{
L=(LinkList)malloc(sizeof(Lnode));
L->data=e;
L->next=NULL;
}
else
{
if(i==1)
{
s=(LinkList)malloc(sizeof(Lnode));
s->data=e;
s->next=L;
L=s;
}
else
{
p=L;j=1;
while(p&&j<i-1)
{
j++;p=p->next;
}
if(p||j>i-1)
return ERROR;
s=(LinkList)malloc(sizeof(Lnode));
s->data=e;
s->next=p->next;
p->next=s;
}
}
}
时间: 2024-10-10 13:23:37