weixin_40377939 2020-11-29 17:23 采纳率: 100%
浏览 9
已采纳

c语言链表相关问题,跪求大佬解惑

 #include <stdio.h>
 #include <string.h>
 #define MAXLEN  16
 struct arashi {
         char    name[MAXLEN];
         int     nenrei;
         double  shincho;
         struct arashi *next;
         struct arashi *prev;
 };
 void print(struct arashi *);
 void dattai(struct arashi);
 int
 main()
 {
         struct arashi a, r, s, h, i;

         strcpy(a.name, "Aiba");
         strcpy(r.name, "Ninomiya");
         strcpy(s.name, "Matsumoto");
         strcpy(h.name, "Oono");
         strcpy(i.name, "Sakurai");
         a.nenrei = 37;
         r.nenrei = 37;
         s.nenrei = 37;
         h.nenrei = 39;
         i.nenrei = 38;
         a.shincho = 176.0;
         r.shincho = 168.3;
         s.shincho = 173.8;
         h.shincho = 166.5;
         i.shincho = 171.2;
         /**************** 10 lines */
         a.next=&r;
         r.next=&s;
         s.next=&h;
         h.next=&i;
         i.next=NULL;
         i.prev=&h;
         h.prev=&s;
         s.prev=&r;
         r.prev=&a;
         a.prev=NULL;
         /****************/

         printf("hitori nuketa\n");
         dattai(r);
         print(&a);

         printf("\nfutari nuketa\n");
         dattai(h);
         print(&a);
         return 0;
 }
 print(struct arashi *f)
 {
         struct arashi   *b;

         while (f!=NULL) {
                 printf("%-9s [%d, %.3f]\n", f->name, f->nenrei, f->shincho); 
                     b=f;
                     f=f->next;
         }
         putchar('\n');
          while (b) {
                 printf("%-9s [%d, %.3f]\n", b->name, b->nenrei, b->shincho); 
                     b=b->prev;
         }
 }
  void dattai(struct arashi){
      
  } 

dattai是删除数据的函数

要求除了dattai任何地方都不能修改,最后输出如图

跪求大佬解惑

  • 写回答

4条回答 默认 最新

  • 鲛人泣珠 2020-12-01 18:54
    关注

    void dattai(struct arashi  z)
    {
       struct arashi * pz,*pzz;
       struct arashi * nz,*nzz;
       if(((z.prev)->prev)==NULL)
            {
               (z.prev)->next=z.next;
               nz=z.next;
               nzz=z.prev;
               nz->prev=nzz;
            }
       else
          {
            (z.next)->prev=z.prev;
            z.prev->next=z.next;
          }
    }

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器