一、填空
1、数据结构按逻辑结构可分为两大类,它们分别是线性和非线性
2.1、在长为n的顺序存储的线性表中插入和删除元素时所需移动元素的平均次数(等概率情况下)为:Ein=n/2,Ede=(n-1)/2
2.2、顺序表有5个元素,设在任何位置上插入元素是等概率的,则在该表中插入一个元素时所需移动元素的平均次数为(C)
A.3 B.2 C.2.5 D.5
2.3、设顺序表有9个元素,则在第3个元素前插入一个元素所需移动元素的个数为(C)A.9 B.4.5
C.7 D.6
3.1设有指针head指向的带表头结点的单链表,现将指针p指向的结点插入表中,使之成为第一个结点,其操作是(A)(其中,p->next、head->next分别表示p、head所指结点的链域)A.p->next=head->next;head->next=p;
B.p->next=head->next;head=p;
C.p->next=head;head=p;
D.p->next=head;p= head;
3.2、某链表如下所示
若要删除值为C的结点应做操作P—> link=P—>link—>link
3.3 删除单链一中值相同的结点:下列算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同,试完成该算法。
void DelSameNode(LinkList L)//L是带头结点的单链表,删除其中的值重复的结点// { ListNode * p,*q,*r;
p=L->next;//p初始指向开始结点//
while(p)//处理当前结点p//
{ q=p;r=q->next;
do //删除与结点*p的值相同的结点//
{ while(r&&r->data!=p->data)
{ q=r;r=r->next;}
if(r)//结点*r的值与*p的值相同,删除*r//
{q->next=r->next;free(r);r=q->next;}
}
while(r );
p=p->next;
}
}
3.4:在值为x的结点前插入一个值为y的新结点,如x不存在,则把新结点插在表尾的算法。
结构形式:struct node {elemtp data;struct node*next }
void inert(struct node *head,elemtp x,elemtp y)
{s=(struct node *)malloc(sizeof(struc node))
s→data=y
if(head→data ==x)