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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog