Enndme· 2023-03-19 10:18 采纳率: 70%
浏览 33
已结题

关于单链表问题,输入输出

为什么创建单链表之后 的显示操作没有执行啊

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
#define OK  1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int  ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
typedef int Status;
Status initList(LinkList &L)//初始化 
{
    L=new LNode;
    L->next =NULL;
  return OK;
}
//创建单链表
void CreatList_H(LinkList &L,int n)
{   
    L=new LNode;
    L->next=NULL;
    for(int i=0;i<n;++i)
    {
        LinkList p=new LNode;
        cin>>p->data;
        p->next=L->next;
        L->next=p;
        
    }
 } 
 void Print(LinkList L)//打印 
 {
     LinkList p=L->next;
     while(p)
     {
     cout<<p->data<<" ";
     p=p->next;
     }
     cout<<endl;
     return;
 }
 Status ListInsert(LinkList &L,int i,ElemType e)//插入元素 
{
    LinkList p=L;
    int j=0;
    while(p && (j<i-1))
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1) return ERROR;
    LinkList s=new LNode;
    s->data=e;
    s->next=p->next;
    p->next=s;
    return OK;
}
LNode *LocateElem(LinkList L,ElemType e)//查找 
{
    LinkList p=L->next;
    while(p &&p->data!=e)
        p->next;
    return p;
}
Status ListDelete(LinkList &L,int i)//删除 
{
    LinkList p=L;
    int j=0;
    while((p->next)&&(j<i-1))
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||(j>i-1)) return ERROR;
    LinkList q=p->next;
    p->next=q->next;
    delete q;
    return OK;
}
int main()
{    
int n,i;
LinkList L;
ElemType e;
initList(L);
cout<<"请输入元素"<<endl;
cin>>n;                     
CreatList_H(L,n);
cout<<"链表元素为:"<<endl; 
Print(L);

    return 0;
}

  • 写回答

5条回答 默认 最新

  • qzjhjxj 2023-03-19 18:57
    关注

    修改如下,改动处见注释,供参考:

    #include<iostream>
    //#include <stdio.h>   修改
    //#include <stdlib.h>  修改
    using namespace std;
    #define OK  1
    #define ERROR 0
    #define OVERFLOW -2
    #define MAXSIZE 100
    typedef int  ElemType;
    typedef struct LNode
    {
        ElemType data;
        struct LNode *next;
    }LNode,*LinkList;
    typedef int Status;
    
    Status initList(LinkList &L)//初始化
    {
        L=new LNode;
        L->next =NULL;
        return OK;
    }
    //创建单链表
    void CreatList_H(LinkList &L,int n)
    {
        //L=new LNode;   修改 此行多余
        //L->next=NULL;  修改 此行多余
        printf("请分别输入%d个结点元素值:\n", n); //修改
        for(int i=0;i<n;++i)
        {
            LinkList p=new LNode;
            cin>>p->data;
            p->next=L->next;
            L->next=p;
        }
     }
     void Print(LinkList L)//打印
     {
         LinkList p=L->next;
         while(p)
         {
             cout<<p->data<<" ";
             p=p->next;
         }
         cout<<endl;
         return;
     }
     Status ListInsert(LinkList &L,int i,ElemType e)//插入元素 
    {
        LinkList p=L;
        int j=0;
        while(p && (j<i-1))
        {
            p=p->next;
            ++j;
        }
        if(!p||j>i-1) return ERROR;
        LinkList s=new LNode;
        s->data=e;
        s->next=p->next;
        p->next=s;
        return OK;
    }
    LNode *LocateElem(LinkList L,ElemType e)//查找 
    {
        LinkList p=L->next;
        while(p && p->data!=e)
            p->next;
        return p;
    }
    Status ListDelete(LinkList &L,int i)//删除 
    {
        LinkList p=L;
        int j=0;
        while((p->next)&&(j<i-1))
        {
            p=p->next;
            ++j;
        }
        if(!(p->next)||(j>i-1)) return ERROR;
        LinkList q=p->next;
        p->next=q->next;
        delete q;
        return OK;
    }
    int main()
    {    
        int n,i;
        LinkList L;
        ElemType e;
        initList(L);
        cout<<"请输入链表结点个数:"<<endl;
        cin>>n;
        CreatList_H(L,n);
        cout<<"链表元素为:"<<endl;
        Print(L);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日