qq_43412960 2020-01-04 12:28 采纳率: 78.6%
浏览 166
已采纳

这是一个关于链表的取值问题


#include<iostream>
#include<conio.h>
#include<string>
#include<iostream>
#include<conio.h>
using namespace std;
#define OK 1;
#define ERROR -1;
typedef int Status;
typedef struct 
{
string name;
float price;
}Book;
typedef  Book ElemType;
typedef struct  LNode 
{
ElemType     Elem;
LNode *Next;
}LNode,*List;
Status InitList( List &L)
{

    L=new LNode();
    L->Next=NULL;
    return OK;
}

Status Q(List &tou,int n)
{
tou=new LNode();
while(n>=0)
{

List P=new LNode();
P->Next=tou->Next;
tou->Next=P;
n--;
return 0;
}
}
Status GetValue(List L,int n,ElemType Elem)
{
List P=L->Next; int j=1;
while(P&&j<n)
{
P=P->Next;
++j;

}
if(!P||j<n)
return ERROR;
Elem=P->Elem;
return OK;
}

int main()
{

    int a=1;
    List L;
    InitList(L);
    Q(L,4);
    ElemType en;
    GetValue(L,2,en);

getch();


return 0;
}



这是我写的链表代码,做了前插法生成链表(Q函数),还有头结点初始化函数(InitList)。最后想搞个链表取值函数getvalue()。写完后,编译没有问题。但是运行的话,会溢出,求解。

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-01-04 23:30
    关注
    #include<iostream>
    #include<conio.h>
    #include<string>
    #include<iostream>
    #include<conio.h>
    using namespace std;
    #define OK 1;
    #define ERROR -1;
    typedef int Status;
    typedef struct 
    {
        string name;
        float price;
    }Book;
    typedef  Book ElemType;
    typedef struct  LNode 
    {
        ElemType     Elem;
        LNode *Next;
    }LNode,*List;
    Status InitList( List &L)
    {
    
        L=new LNode();
        L->Next=NULL;
        return OK;
    }
    
    Status Q(List &tou,int n)
    {
        tou=new LNode();
        tou->Next = NULL; //加上
        while(n>=0)
        {
            List P=new LNode();
            cout << "n=" << n << "\tname:";
            cin >> P->Elem.name;
            cout << "\tprice:";
            cin >> P->Elem.price;
            P->Next=tou->Next;
            tou->Next=P;
            n--;
        }
        return 0;
    }
    Status GetValue(List L,int n,ElemType * Elem) //这里用指针,才能传回来
    {
        List P=L->Next; int j=1;
        while(P&&j<n)
        {
            P=P->Next;
            ++j;
    
        }
        if(!P||j<n)
            return ERROR;
        *Elem=P->Elem;
        return OK;
    }
    
    int main()
    {
    
        int a=1;
        List L;
        InitList(L);
        Q(L,4);
        ElemType en;
        GetValue(L,2,&en);
        cout << "get 2: ";
        cout << en.name << " " << en.price;
        getch();
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?