第二章 線性表
Status DeleteK(SqList &a
{
if(i<
for(count=
a
a
return OK;
}//DeleteK
Status Insert_SqList(SqList &va
{
if(va
va
for(i=va
va
va
return OK;
}//Insert_SqList
int ListComp(SqList A
{
for(i=
if(A
return
}//ListComp
LNode* Locate(LinkList L
{
for(p=l
return p;
}//Locate
int Length(LinkList L)//求鏈表的長度
{
for(k=
return k;
}//Length
void ListConcat(LinkList ha
{
hc=ha;p=ha;
while(p
p
}//ListConcat
見書後答案
Status Insert(LinkList &L
{
p=L;q=(LinkList*)malloc(sizeof(LNode));
q
if(i==
{
q
}
else
{
while(
q
}
}//Insert
Status Delete(LinkList &L
{
if(i==
else
{
p=L;
while(
p
}
}//Delete
Status Delete_Between(Linklist &L
{
p=L;
while(p
if(p
{
q=p
while(q
p
}
}//Delete_Between
Status Delete_Equal(Linklist &L)//刪除元素遞增排列的鏈表L中所有值相同的元素
{
p=L
while(p
{
if(p
{
p=p
}
else
{
while(q
{
free(q);
q=q
}
p
}//else
}//while
}//Delete_Equal
void reverse(SqList &A)//順序表的就地逆置
{
for(i=
A
}//reverse
void LinkList_reverse(Linklist &L)//鏈表的就地逆置;為簡化算法
{
p=L
while(s
{
q
q=s;s=s
}
q
}//LinkList_reverse
分析:本算法的思想是
void merge
{
p=A
while(p&&q)
{
s=p
if(s)
{
t=q
}
p=s;q=t;
}//while
}//merge
void reverse_merge(LinkList &A
{
pa=A
while(pa||pb)
{
if(pa
{
pc=pa;q=pa
}
else
{
pc=pb;q=pb
}
pre=pc;
}
C=A;A
}//reverse_merge
分析:本算法的思想是
void SqList_Intersect(SqList A
{
i=
while(A
{
if(A
if(A
if(A
{
C
i++;j++; //就添加到C中
}
}//while
}//SqList_Intersect
void LinkList_Intersect(LinkList A
{
p=A
pc=(LNode*)malloc(sizeof(LNode));
while(p&&q)
{
if(p
else if(p
else
{
s=(LNode*)malloc(sizeof(LNode));
s
pc
p=p
}
}//while
C=pc;
}//LinkList_Intersect
void SqList_Intersect_True(SqList &A
{
i=
while(A
{
if(A
else if(A
else if(A
{
A
i++;j++; //且C中沒有
}
}//while
while(A
}//SqList_Intersect_True
void LinkList_Intersect_True(LinkList &A
{
p=A
while(p&&q)
{
if(p
else if(p
else if(p
{
pc=pc
pc
p=p
}
}//while
}//LinkList_Intersect_True