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 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题