主题:单链表创建失败,求帮忙啊!
输入一个二维数组,不限二维数组的大小,用单链表结构表示二维数组。实在找不出哪儿出错了,其中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;
}
#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;
}