|
5啊哈币
#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
typedef int * elem
typedef int length
typedef int listsize
typedef struct
{
int num;
}SqList[LIST_INIT_SIZE];
void InitList_Sq(SqList &L){
L.elem=(ElemType * )malloc(LIST_INIT_SIZE * sizeof(ElemType))
if(! L.elem)exit(OVEROW)
L.length=0;
L.listsize=LIST_INIT_SIZE ;
return ok;
}
void insert(){
int newbase,q,p;
ListInsert_Sq(SqList &L, int i, ElemType e){
if(i<1 || i>L.length+1) return ERROR;
if(L.length>=L.listsize){
newbase=(ElemType * )realloc(L.elem,(L.listsize) * sizeof(ElemType));
if(!newbase)exit(OVERFLOW);
L.elem=newbase;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]); p>=q; --p) *(p+1)=*p;
*q=e;
++L.length;
return ok;
}
}
void delect(){
int p,q;
ListDelect_Sq(SqList &L, int i, ElemType &e){
if((i<1)||(i>L.length)) return ERROR;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p) *(p-1)=*p;
--L.length;
return ok;
}
}
void locate(){
int i,p;
int LocateElem_Sq(SqList L, ElemType e, Status(*compare)(ElemType, ElemType)){
i=1;
p=L.elem;
while(i<L.length && (*compara)(*p++,e)) ++i;
if(i<L.length);
return SqList[i].num;
}
}
void MergeList_Sq(SqList La,SqList Lb,SqList &Lc){
int pc;
pa=La.elem; pb=Lb.elem;
Lc.listsize=Lc.length=La.length+Lb.length;
pc=Lc.elem=(ElemType * )malloc(Lc.listsize * sizeof(ElemType));
if(!Lc.elem)exit(OVERFLOW);
pa.last=La.elem+La.length-1;
pb.last=Lb.elem+Lb.length-1;
while(pa<=pa_last && pb<=pb_last){
if(*pa<=*pb) *pc++=*pa++;
else *pc++=*pb++;
}
while(pa<=pa_last) *pc++=*pa++;
while(pb<=pb_last) *pc++=*pb++;
return Lc;
}
void main()
{
int a,b,c,i;
InitList_Sq();
printf("请输入书本号:\n");
for(i=0;i<L.length;i++)
scanf("%d",&SqList[i].num);
ptintf("请插入书本号:\n");
scanf("%d",&a);
insert();
printf("请输入要删除的书本号:\n");
scanf("%d",&b);
delect();
printf("请输入要查找的书本号:\n");
scanf("%d",&c);
locate();
printf("合并后的线性表:\n");
MergeList_Sq();
}
|
|