一共有9个实验没写思路只有代码(可以参考)
1、/*编写函数void delx(linklist head, datatype x),删除带头结点单链表head中第一个值为x 的结点。
并构造测试用例进行测试
linklist delx(linklist head,datatype x){
linklist p=head->next;
linklist pre=head;
while(p){
if(p->info==x){
pre->next=p->next;
s return head;
}
else{
pre=p;
p=p->next;
}
}
return head;
}
2、假设线性表(a1,a2,a3,…an)采用带头结点的单链表存储,请设计算法函数linklist reverse(linklist head),
将带头结点的单链表head就地倒置,使表变成(an,an-1,…a3.a2,a1)。并构造测试用例进行测试。
linklist reverse(linklist head){
linklist p,q,pr;
p = head->next;
q = NULL;
head->next = NULL;
while(p){
pr = p->next;
p->next = q;
q = p;
p = pr;
}
head->next = q;
return head;
}
3、设带头结点的单链表head是升序排列的,设计算法函数linklist insert(linklist head,datatype x),
将值为x的结点插入到链表head中,并保持链表有序性。
分别构造插入到表头、表中和表尾三种情况的测试用例进行测试。
linklist insert(linklist head ,datatype x){
linklist p=head->next;
linklist pre=head;
while(p){
if(p->info>x){
linklist q=(linklist)malloc(sizeof(linklist));
q->info=x;
q->next=p;
pre->next=q;
return head;
}
else{