为什么没有输出

xqls_xqls 2008-03-04 02:26:27
#include <iostream.h>
#include <stdlib.h>

#define M 20

typedef struct STUDENT
{
int num[M];
struct STUDENT *next;
}STU;

void initlist(STU *&sq) //初始化
{
sq=(STU *)malloc(sizeof(STU));
sq->next=NULL;
}

int getlength(STU *sq) //求长度
{
int i=0;
STU *p=sq->next;
while(p!=NULL)
{
i++;
p=p->next;
}
return i;
}

STU *getelem(STU *sq,int i) //求线性表中第i个元素
{
int j=1;
STU *p=sq->next;
if(i<1||i>getlength(sq))
return NULL;
while(j<i)
{
p=p->next;
j++;
}
return p;
}

STU *locate(STU *sq,int x) //按值查找
{
STU *p=sq->next;
int k=0;
while(p!=NULL)
{
for(int j=0;j<M;j++)
if(sq->num[j]=x)
{
k=2;
break;
}
else
k=1;
if(k=2)
{
cout<<"链表中存在此元素!\n";
return p;
}
}
cout<<"链表中不存在此元素!\n";
return p;
}

void init(STU A);

int InsElem(STU *sq,STU s,int x,int i) //插入结点
{
int j=1;
STU *p=sq;
if (i<1||i>getlength(sq)+1)
return 0;
while (j<i)
{
p=p->next;
j++;
}
s.next=p->next;
p->next=&s;
return 1;
}
int DelElem(STU *sq,int i) //删除
{
int j=1;
STU *p=sq,*q;
if (i<1||i>getlength(sq))
return 0;
while (j<i)
{
p=p->next;
j++;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}

void DispList(STU *sq) //输出
{
STU *p=sq->next;
while (p!=NULL)
{
for(int k=0;k<M;k++)
cout<<p->num[k]<<" ";
p=p->next;
}
cout<<endl;
}

void shuru(STU &B,int i)
{
int *b=(int *)malloc(sizeof (int)*i);
for(int j=0;j<i;j++)
{
cin>>b[j];
B.num[j]=b[j];
}
}

void init(STU A)
{
int i;
cout<<"数组的大小:\t";
cin>>i;
if(i<0||i>M)
{
cout<<"错误!过大!";
init(A);
}
else
shuru(A,i);
}



void main()
{
STU stu;
init(stu);
DispList(&stu);
}
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqls_xqls 2008-03-04
  • 打赏
  • 举报
回复


不好意思!!上面的图片位置没有放好。
程序为:大家帮帮忙

#include <iostream.h>
#include <stdlib.h>

#define M 20

typedef struct STUDENT
{
int num[M];
struct STUDENT *next;
}STU;

void initlist(STU *&sq) //初始化
{
sq=(STU *)malloc(sizeof(STU));
sq-> next=NULL;
}

int getlength(STU *sq) //求长度
{
int i=0;
STU *p=sq-> next;
while(p!=NULL)
{
i++;
p=p-> next;
}
return i;
}

STU *getelem(STU *sq,int i) //求线性表中第i个元素
{
int j=1;
STU *p=sq-> next;
if(i <1 ¦ ¦i> getlength(sq))
return NULL;
while(j <i)
{
p=p-> next;
j++;
}
return p;
}

STU *locate(STU *sq,int x) //按值查找
{
STU *p=sq-> next;
int k=0;
while(p!=NULL)
{
for(int j=0;j <M;j++)
if(sq-> num[j]=x)
{
k=2;
break;
}
else
k=1;
if(k=2)
{
cout < <"链表中存在此元素!\n";
return p;
}
}
cout < <"链表中不存在此元素!\n";
return p;
}

void init(STU A);

int InsElem(STU *sq,STU s,int x,int i) //插入结点
{
int j=1;
STU *p=sq;
if (i <1 ¦ ¦i> getlength(sq)+1)
return 0;
while (j <i)
{
p=p-> next;
j++;
}
s.next=p-> next;
p-> next=&s;
return 1;
}
int DelElem(STU *sq,int i) //删除
{
int j=1;
STU *p=sq,*q;
if (i <1 ¦ ¦i> getlength(sq))
return 0;
while (j <i)
{
p=p-> next;
j++;
}
q=p-> next;
p-> next=q-> next;
free(q);
return 1;
}

void DispList(STU *sq) //输出
{
STU *p=sq-> next;
while (p!=NULL)
{
for(int k=0;k <M;k++)
cout < <p-> num[k] < <" ";
p=p-> next;
}
cout < <endl;
}

void shuru(STU &B,int i)
{
int *b=(int *)malloc(sizeof (int)*i);
for(int j=0;j <i;j++)
{
cin> > b[j];
B.num[j]=b[j];
}
}

void init(STU A)
{
int i;
cout < <"数组的大小:\t";
cin> > i;
if(i <0 ¦ ¦i> M)
{
cout < <"错误!过大!";
init(A);
}
else
shuru(A,i);
}


void main()
{
STU stu;
init(stu);
DispList(&stu);
}
NKLoveRene 2008-03-04
  • 打赏
  • 举报
回复
肯定是哪里非法访问内存了
相关推荐

63,603

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下