aaasdfgzzy 2022-09-16 10:54 采纳率: 79.4%
浏览 68
已结题

数据结构(c语言)-双向链表建立打印

//没有打印结果,求改错

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MaxSize 10
typedef struct DuLNode
{
    int data;
    int length;
    struct DuLNode *prior;
    struct DuLNode *next;
}DuLNode,*DuLinkList;

void InitDuList(DuLinkList H,DuLinkList F)
{
     DuLNode *p,*q,*m;
     int i,c=0;
     F->prior = NULL;
     H->next = NULL;
     for(i=0;i<MaxSize;i++)
     {
         p = (DuLNode*)malloc(sizeof(DuLNode));
         q = p;
         c++;
         if(c==1) 
        {
            m = H = p;
         }
         m->next = p;
         m = m->next;
         q->prior = F->prior;
         F->prior = q;
         p->data = i;
        H->length += 1;
     }
}

void Print(DuLNode *H,DuLNode *F)
{
    DuLinkList p,q;
    p = H;
    q = F;
    int i;
    printf("顺序打印:\n");
    for(i=0;i < H->length;i++)
    {
        printf("data[%d] = %d",i,p->data);
        p = p->next;
    }
    printf("逆序打印:\n");
    for(i= H->length-1; i>=0; i--)
    {
        printf("data[%d] = %d",i,q->data);
        q = q->prior; 
    } 
}

int main()
{
    DuLinkList H,F;
    InitDuList(H,F);
    Print(H,F);
    return 0;
} 

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-09-16 22:52
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #define MaxSize 10
    typedef struct DuLNode
    {
        int data;
        int length;
        struct DuLNode *prior;
        struct DuLNode *next;
    }DuLNode,*DuLinkList;
    
    void InitDuList(DuLinkList* H,DuLinkList* F) //修改
    {
         DuLNode *p,*q,*m;
         int i,c=0;
         //F->prior = NULL;
         //H->next = NULL;
         for(i=0;i<MaxSize;i++)
         {
             p = (DuLNode*)malloc(sizeof(DuLNode));
             //q = p;
             p->next = NULL;
             p->data = i;
             c++;
             if(c == 1){
                (*H) = p;
                (*H)->prior = NULL;
             }
             else{
                m->next = p;
                p->prior= m;
                //m = m->next;
             }
             m = p;
             //q->prior = F->prior;
             //F->prior = q;
             //H->length += 1;
         }
         (*F) = p;
    }
    
     
    void Print(DuLNode *H,DuLNode *F)
    {
        DuLinkList p,q;
        p = H;
        q = F;
        int i = 0;
        printf("顺序打印:\n");
        while (p)  //for(i=0;i < H->length;i++)
        {
            printf("data[%d]=%d ",i++, p->data);
            p = p->next;
        }
        printf("\n");
        i--;
        printf("逆序打印:\n");
        while (q) //for(i= H->length-1; i>=0; i--)
        {
            printf("data[%d]=%d ",i--,q->data);
            q = q->prior; 
        }
        printf("\n"); 
    }
     
    int main()
    {
        DuLinkList H = NULL,F = NULL;
        InitDuList(&H,&F); //InitDuList(H,F);
        Print(H,F);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: