目录
【2008】
试写出二分查找的非递归算法。P165
int SearchBin(SqTable T,keyType key)
{
int low,high;
low=1;high=T.n;
while(low<=high)
{
mid=(low+high)/2;
if(key==T.elem[mid].key) return mid;
else if(key<T.elem[mid].key) high=mid-1;
else low=mid+1;
}
return 0;
}
已知函数swap(R[min],R[i])功能是将记录R[min]和R[i]交换。试写出直接选择排序算法。P191
void SelectSort(List R,int n)
{
int min,i,j;
for(i=1;i<=n-1;i++)
{
min=i;
for(j=i+1;j<=n;j++);
if(R[j].key<R[min].key) min=j;
if(min!=i) swap(R[min],R[i]);
}
}
【1910】
34. 设链栈的类型定义如下:P65
typedef struct node
{
DataType data;
Struct node *next;
}LkStk;
已知判断栈空的函数为EmptyStack(LkStk *LS) ,设计算法Pop(LkStk "LS)实现
出栈过程。
int Pop(LkStk "LS)
{ LkStk "temp;
if( ! EmptyStack(IS))
{ temp= LS –>next;
LS- > next=temp -> next;
free(temp);
return 1;
}
else return 0;
}
35. 已知待排序的数据存储结构描述如下:P188
typedef struct
{
int key;
ItemType otheritem;
}RecordType;
typedef RecordType List [n+1];