回 帖 发 新 帖 刷新版面

主题:单链表创建失败,求帮忙啊!

输入一个二维数组,不限二维数组的大小,用单链表结构表示二维数组。实在找不出哪儿出错了,其中cout<<(L+1)->Data<<endl;和cout<<(L+1)->Row;是用来测试链表是否创建成功的。

#include<iostream>
#include<cmath>
using namespace std;
#define NULL 0
struct LinkNode
{int Row;//代表行号
 int Column;//代表列号
 int Data;//存放数据
 LinkNode *Next;//存放后继地址
};
class ARR
{public:
  void get(int *q,int m);//对单链表赋值,形参m代表数组的维数
private:
  LinkNode *L;//L指向链表头指针
};
void ARR::get(int*q,int m)
{
 int w=0;
 L=NULL;
 LinkNode *s,*r;
 s=r=new LinkNode;
 int i,j;
 cout<<"The original arr is:"<<endl;
 for(i=0;i<m;i++)
 {
   for(j=0;j<m;j++)
   {
    s->Data=*q;
    s->Row=i;
    s->Column=j;
    if(w==0){L=s;}//只有w==0时头指针指向s
    else r->Next=s;
    r=s;
    cout<<s->Data<<" ";
    s=new LinkNode;
    q++;
    w++;
    }
   cout<<endl;
 }
 r->Next=NULL;
 cout<<(L+1)->Data<<endl;//用于测试链表是否创建成功
 cout<<(L+1)->Row;//用于测试链表是否创建成功
}
int main()
{ARR arr;//定义一个对象
 int i;//代表数组的维数
 cout<<"请输入整形数组的维数:";
 cin>>i;
 cout<<endl;
 int *p;
 p=new int[i*i];//根据i动态分配数组储存空间,p指向该数组的储存空间
 for(int j=0;j<i*i;j++)//输入该数组的元素的值
 {cout<<"请输入第"<<j+1<<"个数组元素:"<<endl;
  int x;
  cin>>x;
  *(p+j)=x;
 }
 arr.get(p,i);
 return 0;
}

回复列表 (共1个回复)

沙发


// 测试链表创建是否成功.cpp : 定义控制台应用程序的入口点。
//

#include<iostream>
#include<cmath>
using namespace std;
#define NULL 0
struct LinkNode
{int Row;//代表行号
 int Column;//代表列号
 int Data;//存放数据
 LinkNode *Next;//存放后继地址
};
class ARR
{public:
  void get(int *q,int m);//对单链表赋值,形参m代表数组的维数
private:
  LinkNode *L;//L指向链表头指针
};
void ARR::get(int*q,int m)
{
 int w=0;
 L=NULL;
 LinkNode *s,*r;
 s=r=new LinkNode;
 int i,j;
 cout<<"The original arr is:"<<endl;
 for(i=0;i<m;i++)
 {
   for(j=0;j<m;j++)
   {
    s->Data=*q;
    s->Row=i;
    s->Column=j;
    if(w==0){L=s;}//只有w==0时头指针指向s
    else r->Next=s;
    r=s;
    cout<<s->Data<<" ";
    s=new LinkNode;
    q++;
    w++;
    }
   cout<<endl;
 }
 r->Next=NULL;
 cout<<L->Next->Data<<endl;//用于测试链表是否创建成功
 cout<<L->Next->Row;//用于测试链表是否创建成功
}
int main()
{ARR arr;//定义一个对象
 int i;//代表数组的维数
 cout<<"请输入整形数组的维数:";
 cin>>i;
 cout<<endl;
 int *p;
 p=new int[i*i];//根据i动态分配数组储存空间,p指向该数组的储存空间
 for(int j=0;j<i*i;j++)//输入该数组的元素的值
 {cout<<"请输入第"<<j+1<<"个数组元素:"<<endl;
  int x;
  cin>>x;
  *(p+j)=x;
 }
 arr.get(p,i);
 return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册