凊(◦˙▽˙◦) 2022-12-04 00:29 采纳率: 88%
浏览 12
已结题

逆序输出那里有个乱码 ,怎么修改

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<iostream.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
    ElemType data;//结点数据域
    struct LNode *next;//结点指针域
}LNode,*LinkList;
//初始化一个空的单链表L
void init(LinkList &L){  //Init()顺序表的初始化函数
    L=(LinkList)malloc(sizeof(LNode));  //申请空间
    L->next=NULL; //头结点的指针域置空,初始长度为0
}
//创建,
void createList(LinkList &L,int n){
    ElemType ch;
    LinkList p=L,s;
    for(int i=1;i<=n;i++){
        cin>>ch;
        s=(LinkList)malloc(sizeof(LNode));//开启内存空间
        s->data=ch;  //新的节点数据
        s->next=p->next;  
        p->next=s;
        p=s;
    }
}

//输出
void display(LinkList L){
    LinkList p=L->next; //int s=0;
    while(p){
        cout<<p->data<<" ";  //s+=p->data;
        p=p->next;
    }
}
//逆序输出
void nixv(LinkList L){
    if(L!=NULL){
        nixv(L->next);
            cout<<L->data<<" ";
    }
}


//插入
bool listInsert_L(LinkList &L,int i,ElemType e){
    LinkList p=L,s; int j=0;
    while(p&&j<i-1){
        p=p->next;
        j++;
    }
    if(!p||j>i-1) return false;
    s=(LinkList)malloc(sizeof(LNode));  //开启新节点的内存
    s->data=e;  //把值传进去
    s->next=p->next;
    p->next=s;
    return true;
}
//删除
bool linkDelete_L(LinkList &L,int i,ElemType e){
    LinkList p=L,q;
    int j=0;
    while(p->next&&j<i-1){
        p=p->next;//一直next知道找到输入的位置
        j++;
    }
    if(!(p->next)||j>i-1) return false;
    q=p->next;  
    p->next=q->next;
    e=q->data;
    cout<<e<<endl;  //输出被删除的值
    free(q);
    return true;
}


img

逆序输出那里有个乱码 ,怎么修改

  • 写回答

2条回答 默认 最新

  • Norcor 2022-12-04 01:11
    关注
    void nixv(LinkList L){
        if(L - > next !=NULL)
        {
            nixv(L->next);
            cout<<L->next.data<<" ";
        }
    }
    

    估摸着你要理由,看这串代码

    void nixv(LinkList L){
        if(L!=NULL)
        {
            nixv(L->next);
            cout<<L->data<<" ";
        }
    }
    //当传入头结点L,if判断成立,则一定会打印头结点的值,即一个随机值(毕竟你的头结点没保存数据)
    //换成L->next,那头结点之后有结点,所以打印下一个结点的值。
    //对倒数第二个结点,其后有尾结点,执行nixv(尾结点)后,会打印尾结点的值
    //对尾结点,尾结点的下一结点为NULL,不执行,跳出,从而打印的信息是从尾结点到头结点的下一结点的所有值,完美
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月12日
  • 已采纳回答 12月4日
  • 创建了问题 12月4日

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊