第二章:线性表
知识点:
1、编写程序实现对顺序表逆置
void Invert(seqList *L,int length)
{
int temp;
int i;
for(i=0;i<length/2;i++)
{
temp = L->data[i]; //交换
L->data[i] = L->data[length-i-1];
L-data[length-i-1] = temp;
}
}
2、编写程序将有序递增的单链表中的数据值在a到b之间的元素删除
void DeleteAb(LinkList &L,int a,int b)
{
LNode *P = L->next; //默认带头结点
LNode *Pre = L; //删除结点的前驱结点
while(P!=NULL)
{
if(P->data<a)
{
Pre = p; //Pre为第一次出现元素a的前驱
p=p->next;
}
else if(P->data>=a&&p->data<=b)
{
p=p-next; //p指向首次大于b停止
}
else
Pre->next=p; //即删除a-b之间的元素
}
Pre->next=p; //指向表尾NULL,表尾元素小于等于b
}
3、编写程序删除单链表中所有关键字值为x的元素
void DeleteX(LinkList &L,int x)
{
LNode *p=L->next;
LNode *pre=L; //p的前驱
while(P!=NULL)
{
if(p->data==x)
{
LNode *temp = P;
pre->next = temp->next;
p=p->next;
free(temp);
}
else
{
pre=p;
p=p->next; //遍历
}
}
}
4、编写程序实现对单链表的逆置
void Reverse(LinkList &L)
{
LNode *p=L->next;
L->next=NULL;
LN