aaasdfgzzy 2022-09-25 08:19 采纳率: 79.3%
浏览 25
已结题

数据结构(C语言版)`双向链表

程序有误,不知道哪里错了,题目就是一个关于双向链表的打印。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxSize 5

typedef struct DuLNode
{
    char varchar;
    struct DuLNode *prior; //前驱指针
    struct DuLNode *next;  //后驱指针
}DuLNode,*DuLinkList;

DuLinkList InitDuLinkList(DuLNode *H)
{
    DuLinkList p,q;
    int i,c=0;
    for(i=0;i<MaxSize;i++)
    {
        p = (DuLinkList)malloc(sizeof(DuLNode));
        c++;
        if(c==1)
        {
            q = H = p;  //首元结点做头节点
            q->prior = NULL;
        }
        else 
        {
            q->next = p;
            p->prior = q;
            q = p;
        }
    }
    return H;
}

DuLinkList InputElem(DuLinkList H)
{
    int i;
    DuLinkList p,q;
    p = H;
    for(i=0;i<MaxSize;i++)
    {
        printf("请输入第%d个字符:",i+1);
        scanf("%c",&p->varchar);
        if(p->next==NULL) q = p;    //找到尾节点
        p = p->next;
    }
    return q;
}

void Print(DuLinkList *H,DuLinkList *L)
{
    DuLinkList p,q;
    char s[2][20];
    int i;
    p = H;
    q = L;
    for(i=0;i<MaxSize;i++)
    {
        s[0][i] = p->varchar;
        s[1][i] = q->varchar;
        p = p->next;
        q = q->prior;
    }
    printf("顺序打印为:%s\n逆序打印为:%s\n",s[0],s[1]);
    if(strcmp(s[0],s[1]) == 0) printf("相等\n");
    else printf("不相等\n");
}

int main()
{
    DuLNode *H,*L;
    H = InitDuLinkList(H);    //返回头节点
    L = InputElem(H);    //返回尾节点
    Print(H,L);
    return 0;
}

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 10月3日
      • 已采纳回答 9月25日
      • 创建了问题 9月25日

      悬赏问题

      • ¥15 C# 循环读写数据中途突然变慢
      • ¥100 CVI2012 做暗通道图像去雾思路详细步骤
      • ¥15 用Java实现双端队列
      • ¥150 ID3决策树实现分类
      • ¥15 multisim10安装后,找不到NI License Manager的程序来安装许可证
      • ¥15 C++银行卡系统 Help!
      • ¥15 R语言数据分析的相关问题
      • ¥15 模型导入SP后贴图纹理只有一个,拆了四张UV的,怎么解决?
      • ¥15 检索带order by 非常慢
      • ¥20 python 爬虫 token 加密方式