数据结构(C语言版)(第3版)实验三(答案)

这篇博客包含了9个C语言实现的链表操作实验,包括删除特定节点、链表反转、保持有序性的插入、删除所有指定节点、排序、合并升序/降序链表、求链表交集、调整奇偶节点位置以及查找倒数第k个节点等。每个操作都提供了详细代码和测试用例。
摘要由CSDN通过智能技术生成

一共有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{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值