m0_67830870 2022-11-06 23:10 采纳率: 62.5%
浏览 30
已结题

为什么我的单链表输出不了啊

#include"pro2.h"

bool Creat(LinkList*&L)
{

LNode* p,* q;
int n;

p=q=L = (LNode*)malloc(sizeof(LNode));
if (L == NULL||p==NULL||q==NULL)
    return false;
L->next = NULL;
q = L;
printf("你想输入多少个字符:\n");
cin>> n;
printf("请输入字符:\n");
for (int i = 0; i     {
    cin >> p->data;
    p->next = q->next;
    q->next = p;
    q = p;

}
return true;

}

bool CreatNULL(LinkList*& L)
{
L = (LinkList*)malloc(sizeof(LinkList));
if (L == NULL)
return false;
L->next = NULL;
return true;

}

void PrintList(LinkList * L)//输出单链表
{
    LNode* p = L->next;//定义头结点
    printf("\n");
    while (p != NULL)
    {
        printf("%c", p->data);//输出单链表中的data数据
            p = p->next;//遍历至下一个结点
    }
    printf("\n");
    
}

bool seperate(LinkList* &L, LinkList* &LA, LinkList* &LB, LinkList* &LC) //拆分链表
{
    //L是原始单链表,分割后的三个链表是LA(数字)、LB(小写字母)、LC(大写字母)
    LNode* pa, * pb, * pc;
    LNode* p = L->next; //原始链表遍历指针
    pa = LA= (LNode*)malloc(sizeof(LNode));//分配空间
    pb = LB = (LNode*)malloc(sizeof(LNode));
    pc = LC = (LNode*)malloc(sizeof(LNode));
    //pa,pb,pc分别是三个新链表的尾指针,初始时指向各表头结点

    if (pa == NULL || pb == NULL || pc == NULL)
        return false;
    
        while (p != NULL)
        {
            if (p->data >= '0' && p->data                 {
                pa->next = p;
                pa = p;
            }
            else if (p->data >= 'a' && p->data                 {
                pb->next = p;
                pb = p;

            }
            else if(p->data>='A'&& p->data                {
                pc->next = p;
                pc = p;
            }
            p = p->next;

        }

        //使链表最后一个结点的指针域指向空

        pa->next = NULL;
        pb->next =NULL ;
        pc->next = NULL;

        return true;
    }



int main()
{
    LinkList* L, * L1, * L2, * L3;
    L1 = (LinkList*)malloc(sizeof(LinkList));
    L2 = (LinkList*)malloc(sizeof(LinkList));
    L3 = (LinkList*)malloc(sizeof(LinkList));
    Creat(L);
    PrintList(L);
    CreatNULL(L1);
    CreatNULL(L2);
    CreatNULL(L3);
    seperate(L, L1, L2, L3);
    PrintList(L1);
    PrintList(L2);
    PrintList(L3);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-11-07 05:52
    关注

    创建函数中,for循环产生新结点p时,你要重新创建新节点对象啊。L只是头结点

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 11月6日

悬赏问题

  • ¥15 如何提取csv文件中需要的列,将其整合为一篇完整文档,并进行jieba分词(语言-python)
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?