西瓜籽辣 2021-09-18 17:47 采纳率: 25%
浏览 55
已结题

具有头结点的单链表,修改程序,不知道哪里错了


#include  <iostream>
using  namespace  std;

int  OK  =  0;
int  ERROR  =  1;

typedef  char  ElemType;

struct  LNode
{
        ElemType      data;      //数据域
        LNode                *next;      //指针域
};

//  *LinkList为Lnode类型的指针
int  InitList_L(LNode  *&L)
{
        
L = new LNode;
    L->next = NULL;

        return  OK;
}

//在线性表L中查找值为e的数据元素
LNode  *LocateELem_L(LNode  *L,  ElemType  e)
{
//返回L中值为e的数据元素的地址,查找失败返回NULL
   LNode  *p;
p=L->next;
while(p&&p->data!=e)
p=p->next;
return p;

}
//在L中第i个元素之前插入数据元素e
int  ListInsert_L(LNode  *&L,int  i,ElemType  e)
{
        LNode  *p=L;
        int  j=0;
        while(p&&  j<i-1)
        {
                p=p->next;        //寻找第i?1个结点
                ++j;
        }
        if(!p||j>i-1)
                return  ERROR;        //i大于表长 + 1或者小于1
        
e=p->data;

        return  OK;
}//ListInsert_L
//将线性表L中第i个数据元素删除
int  ListDelete_L(LNode  *  &L,int  i,ElemType  &e)
{
        LNode  *p=L;
         LNode  *q;
        int  j=0;
        while(p->next  &&j<i-1)  //寻找第i个结点,并令p指向其前驱
        {
                p=p->next;
                ++j;
        }
        if(!(p->next)||j>i-1)
                return  ERROR;  //删除位置不合理       
            q=p->next;
            p->next=q->next;
            e=q->data;

        delete  q;          //释放删除结点的空间
        return  OK;
}//ListDelete_L
int  DestroyList_L(LNode  *&L)
{
        LNode  *  p;
        
        while(L)
      {
        p=L;
        L=L->next;
        delete p;


        L  =  NULL;
        return  OK;
}
void  CreateList_F(LNode  *&L,int  n)
{
        if  (InitList_L(L)!=  OK)  return;
          //先建立一个带头结点的单链表
        for(int  i=n;  i>0;  --i)
        {
                LNode  *p=new  LNode;  //生成新结点
                cin>>p->data;  //输入元素值
                p->next=L->next;
                L->next=p;          //插入到表头
        }
}//CreateList_
void  output(LNode  *L)
{
        L  =  L->next;
        while(L!=NULL)
        {
                cout<<L->data<<'  ';
                L  =  L->next;
        }
        cout<<endl;
}
int  main()
{
        LNode  *head;

        //创建链表
        int  n;
        cin>>n;
        CreateList_F(head,  n);
        output(head);

        //插入元素
        int  loc;
        ElemType  ne;
        cin>>loc;
        cin>>ne;
        ListInsert_L(head,loc,ne);
        output(head);

        //定位并输出其下一个
        cin>>ne;
        LNode  *pt  =  LocateELem_L(head,  ne);
        if  (pt==NULL)  cout<<"no  found!"<<endl;
        else  if  (pt->next==NULL)  cout<<"NULL"<<endl;
        else  cout<<pt->next->data<<endl;
        output(head);

        //删除元素
        cin>>loc;
        ListDelete_L(head,loc,ne);
        output(head);

        //销毁链表
        DestroyList_L(head);

        return  0;
    }

错误如图

img


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/899617959136163.png "=600 #left")
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-09-18 17:49
    关注

    具体什么现象,能不能提供一下,不然找起来效率低

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

报告相同问题?

问题事件

  • 专家修改了标签 9月22日
  • 已结题 (查看结题原因) 9月20日
  • 已采纳回答 9月18日
  • 修改了问题 9月18日
  • 展开全部

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题