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

数据结构(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 14: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月23日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部