printf("\n");
return OK;
}
int ListLength(SqList L)
{
return L.length;
}
int GetElem(SqList L,int i,ElemType &e)
{
e=L.elem[i-1];
return OK;
}
int ListInsert_Sq(SqList &L,int i,int e)
{
if(i<1||i>L.length+1)
return ERROR;
ElemType *p,*q,*newbase;
if(L.listsize<=L.length)
{
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
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 MergeList(SqList La,SqList Lb,SqList &Lc)
{
int i,j,k,La_len,Lb_len,ai,bj;
i=j=1;
k=0;
InitList_Sq(Lc);
La_len=ListLength(La);
Lb_len=ListLength(Lb);
while((i<=La_len)&&(j<=Lb_len))
{
GetElem(La,i,ai);
GetElem(Lb,j,bj);
if(ai<=bj)
{
ListInsert_Sq(Lc,++k,ai);
i++;
}
else
{
}
ListInsert_Sq(Lc,++k,bj);
j++;
}
while(i<=La_len)
{
GetElem(La,i++,ai);
ListInsert_Sq(Lc,++k,ai);
}
while(j<=Lb_len)
{
GetElem(Lb,j++,bj);
ListInsert_Sq(Lc,++k,bj);
}
Load_Sq(Lc);
}
int main()
{
int an,bn,i,e;
SqList La,Lb,Lc;
InitList_Sq(La);
scanf("%d",&an);
for(i=1;i<=an;i++)
{
scanf("%d",&e);
ListInsert_Sq(La,i,e);
}
printf("List A:");
Load_Sq(La);
InitList_Sq(Lb);
scanf("%d",&bn);
for(i=1;i<=an;i++)
{
scanf("%d",&e);
ListInsert_Sq(Lb,i,e);
}
printf("List B:");
Load_Sq(Lb);
printf("List C:");
MergeList(La,Lb,Lc);
return 0;
}
1.3 顺序表逆置
#include
#include
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ElemType int
typedef struct
{
int *elem,length,listsize;
}SqList;
int InitList_Sq(SqList &L)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
{
printf("NO1");
return ERROR;
}
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}
int Load_Sq(SqList &L)
{
int i;
if(!L.length)
{
printf("This List is empty!\n");
return ERROR;
}
else
{
for(i=0;i=L.listsize)
{
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)
{
printf("NO2");
return ERROR;
}
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;p--)
*(p+1)=*p;
*q=e;
L.length++;
return OK;
}
int swap(SqList &L,int n)
{
int i,j,temp;
for(i=0,j=n-1;j>i;i++,j--)
{
temp=L.elem[i];
L.elem[i]=L.elem[j];
L.elem[j]=temp;
}
return OK;
}
int main()
{
SqList T;
int n,i;
ElemType x;
scanf("%d",&n);
InitList_Sq(T);
for(i=1;i
#include
#define ERROR 0
#define OK 1
#define ElemType int
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int CreateLink_L(LinkList &L,int n)
{
LinkList p,q;
int i;
ElemType e;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
q=(LinkList)malloc(sizeof(LNode));
q=L;
for(i=0;i