我建立了一顺序表里面刚开始没有元素,
我想在这表中放入元素的函数怎么写呀,
这顺序表的输出的又怎么写?
#include <iostream>
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct // 定义顺序表
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void inti_sequelist(SEQUENLIST a) //初始化顺序表
{
a.last=0;
return ;
}
int insert(SEQUENLIST a,DATATYPE x,int i) //顺序表的放入一个元素
{
int k;
if(i<1||i>a.last+1||a.last>=MAXSIZE)
return 0;
else
{
for(k=a.last;k>=i;k--)
a.datas[k]=a.datas[k-1];
a.datas[i-i]=x;
a.last=a.last+1;
return 1;
}
}
void main() //主函数
{
//就是这一个主函数这里怎么自己输入元素到顺序表中呢,
//是不是要另外再写一个函数来控制
//那顺序表还是?这一个顺序表的输出又怎么写呢请指教!
}
12 个解决方案
#1
#include <iostream>
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(i<1||i>a->last+1||a->last>=MAXSIZE)
cout<<"error!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
int main()
{
int index;
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,2);
insert(a,3,3);
insert(a,4,4);
insert(a,5,5);
insert(a,6,6);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
cout<<endl<<"again!"<<endl<<endl;
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,1);
insert(a,3,1);
insert(a,4,1);
insert(a,5,1);
insert(a,6,1);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
return 0;
}
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(i<1||i>a->last+1||a->last>=MAXSIZE)
cout<<"error!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
int main()
{
int index;
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,2);
insert(a,3,3);
insert(a,4,4);
insert(a,5,5);
insert(a,6,6);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
cout<<endl<<"again!"<<endl<<endl;
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,1);
insert(a,3,1);
insert(a,4,1);
insert(a,5,1);
insert(a,6,1);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
return 0;
}
#2
可不可以在运行的时候由自己输入呀我的意思是说用cin函数的
#3
在初始化顺序表的时候SEQUENLIST *a为什么这里要带一星号呀?下面也是这样的?不明白?
#4
#include <iostream>
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a);
void menu(SEQUENLIST *a);
void get_message(SEQUENLIST *a);
void display(SEQUENLIST *a);
void insert(SEQUENLIST *a,DATATYPE x,int i);
int main()
{
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
for(;;)
menu(a);
return 0;
}
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void menu(SEQUENLIST *a)
{
char cho;
cout<<"**************************"<<endl;
cout<<" 1.向顺序表插入数据 "<<endl;
cout<<" 2.显示顺序表内容 "<<endl;
cout<<" 3.退出 "<<endl;
cout<<"**************************"<<endl;
cout<<"请选择(1~3):";
cin>>cho;
switch(cho)
{
case '1':
{
get_message(a);
}break;
case '2':
{
display(a);
}break;
case '3':
{
exit(0);
}
default:break;
}
}
void get_message(SEQUENLIST *a)
{
DATATYPE x;
int i;
system("cls");
cout<<"请输入要插入的数据:";
cin>>x;
cout<<"请输入要插入的位置:";
cin>>i;
insert(a,x,i);
}
void display(SEQUENLIST *a)
{
int index;
system("cls");
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(a->last>=MAXSIZE)
cout<<"溢出错误!"<<endl;
else if(i<1||i>a->last+1)
cout<<"插入位置错误!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a);
void menu(SEQUENLIST *a);
void get_message(SEQUENLIST *a);
void display(SEQUENLIST *a);
void insert(SEQUENLIST *a,DATATYPE x,int i);
int main()
{
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
for(;;)
menu(a);
return 0;
}
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void menu(SEQUENLIST *a)
{
char cho;
cout<<"**************************"<<endl;
cout<<" 1.向顺序表插入数据 "<<endl;
cout<<" 2.显示顺序表内容 "<<endl;
cout<<" 3.退出 "<<endl;
cout<<"**************************"<<endl;
cout<<"请选择(1~3):";
cin>>cho;
switch(cho)
{
case '1':
{
get_message(a);
}break;
case '2':
{
display(a);
}break;
case '3':
{
exit(0);
}
default:break;
}
}
void get_message(SEQUENLIST *a)
{
DATATYPE x;
int i;
system("cls");
cout<<"请输入要插入的数据:";
cin>>x;
cout<<"请输入要插入的位置:";
cin>>i;
insert(a,x,i);
}
void display(SEQUENLIST *a)
{
int index;
system("cls");
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(a->last>=MAXSIZE)
cout<<"溢出错误!"<<endl;
else if(i<1||i>a->last+1)
cout<<"插入位置错误!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
#5
编的别见笑,学的不久,共同进步.a是指针类型,是保存malloc开辟的内存空间的地址.
#6
哦,差点忘了.再加个free.
case '3':
{
free(a);
exit(0);
}
呵呵,你贴回去运行看看吧.这个是手工输入的.
case '3':
{
free(a);
exit(0);
}
呵呵,你贴回去运行看看吧.这个是手工输入的.
#7
非常感谢呀基本上都明白了,你学这个多久了呀,还有做这个题时先要想的是什么呢
#8
你加的那个FREE是什么意思是好象没有定义的呀
#9
free没有定义是什么意思?
free就是free,和malloc搭配的
free就是free,和malloc搭配的
#10
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));这一句大概的意思我知道不是很明白是不是始化这一个顺序表为其申请空间呀,不明白?
free(a);这是不是一个库函数,不明白,没看你定义呀
exit(0);这是不是一个库函数,不明白,没看你定义呀
system("cls");这是不是一个库函数,不明白,没看你定义呀
就只有这么一点不明白了,
对了在运行这一个程序的时候为什么只能输出其中一个就是我自己输入的那一个数据不能输出其它的数据呢就是说不能打顺序表中的所有数据全都输出呀,哎,太菜了
free(a);这是不是一个库函数,不明白,没看你定义呀
exit(0);这是不是一个库函数,不明白,没看你定义呀
system("cls");这是不是一个库函数,不明白,没看你定义呀
就只有这么一点不明白了,
对了在运行这一个程序的时候为什么只能输出其中一个就是我自己输入的那一个数据不能输出其它的数据呢就是说不能打顺序表中的所有数据全都输出呀,哎,太菜了
#11
我学习也没多久的,共同进步吧,我在这里也和别人学习了许多东西.
malloc()分配空间,当然就需要free()和他搭配来释放动态申请的空间.
exit()是推出程序的函数,需要返还给操作系统一个值,0为正常推出.
system()是调用系统的命令,以前的dos命令可以用的,例如cls是清屏的,你还可以加入
system("pause");就是让系统暂停,按任意键后继续,你甚至还可以调用system("dir");
哈哈
以上的函数不是自己定义的,只需要知道怎么调用就可以.
我的程序能输出所有的数据啊,我用的是循环.你有可能只插入一个值就去显示查看了,你试着多插入几个值,再显示,他们就会从上倒下排列出来.
加油吧兄弟,新年好运.
malloc()分配空间,当然就需要free()和他搭配来释放动态申请的空间.
exit()是推出程序的函数,需要返还给操作系统一个值,0为正常推出.
system()是调用系统的命令,以前的dos命令可以用的,例如cls是清屏的,你还可以加入
system("pause");就是让系统暂停,按任意键后继续,你甚至还可以调用system("dir");
哈哈
以上的函数不是自己定义的,只需要知道怎么调用就可以.
我的程序能输出所有的数据啊,我用的是循环.你有可能只插入一个值就去显示查看了,你试着多插入几个值,再显示,他们就会从上倒下排列出来.
加油吧兄弟,新年好运.
#12
我好多都不明白的哦你懂得还真多呀谢谢哦
#1
#include <iostream>
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(i<1||i>a->last+1||a->last>=MAXSIZE)
cout<<"error!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
int main()
{
int index;
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,2);
insert(a,3,3);
insert(a,4,4);
insert(a,5,5);
insert(a,6,6);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
cout<<endl<<"again!"<<endl<<endl;
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,1);
insert(a,3,1);
insert(a,4,1);
insert(a,5,1);
insert(a,6,1);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
return 0;
}
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(i<1||i>a->last+1||a->last>=MAXSIZE)
cout<<"error!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
int main()
{
int index;
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,2);
insert(a,3,3);
insert(a,4,4);
insert(a,5,5);
insert(a,6,6);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
cout<<endl<<"again!"<<endl<<endl;
sequelist_setnull(a);
insert(a,1,1);
insert(a,2,1);
insert(a,3,1);
insert(a,4,1);
insert(a,5,1);
insert(a,6,1);
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
return 0;
}
#2
可不可以在运行的时候由自己输入呀我的意思是说用cin函数的
#3
在初始化顺序表的时候SEQUENLIST *a为什么这里要带一星号呀?下面也是这样的?不明白?
#4
#include <iostream>
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a);
void menu(SEQUENLIST *a);
void get_message(SEQUENLIST *a);
void display(SEQUENLIST *a);
void insert(SEQUENLIST *a,DATATYPE x,int i);
int main()
{
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
for(;;)
menu(a);
return 0;
}
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void menu(SEQUENLIST *a)
{
char cho;
cout<<"**************************"<<endl;
cout<<" 1.向顺序表插入数据 "<<endl;
cout<<" 2.显示顺序表内容 "<<endl;
cout<<" 3.退出 "<<endl;
cout<<"**************************"<<endl;
cout<<"请选择(1~3):";
cin>>cho;
switch(cho)
{
case '1':
{
get_message(a);
}break;
case '2':
{
display(a);
}break;
case '3':
{
exit(0);
}
default:break;
}
}
void get_message(SEQUENLIST *a)
{
DATATYPE x;
int i;
system("cls");
cout<<"请输入要插入的数据:";
cin>>x;
cout<<"请输入要插入的位置:";
cin>>i;
insert(a,x,i);
}
void display(SEQUENLIST *a)
{
int index;
system("cls");
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(a->last>=MAXSIZE)
cout<<"溢出错误!"<<endl;
else if(i<1||i>a->last+1)
cout<<"插入位置错误!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
using namespace std;
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE datas[MAXSIZE];
int last;
}SEQUENLIST;
void sequelist_setnull(SEQUENLIST *a);
void menu(SEQUENLIST *a);
void get_message(SEQUENLIST *a);
void display(SEQUENLIST *a);
void insert(SEQUENLIST *a,DATATYPE x,int i);
int main()
{
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));
sequelist_setnull(a);
for(;;)
menu(a);
return 0;
}
void sequelist_setnull(SEQUENLIST *a)
{
a->last=0;
}
void menu(SEQUENLIST *a)
{
char cho;
cout<<"**************************"<<endl;
cout<<" 1.向顺序表插入数据 "<<endl;
cout<<" 2.显示顺序表内容 "<<endl;
cout<<" 3.退出 "<<endl;
cout<<"**************************"<<endl;
cout<<"请选择(1~3):";
cin>>cho;
switch(cho)
{
case '1':
{
get_message(a);
}break;
case '2':
{
display(a);
}break;
case '3':
{
exit(0);
}
default:break;
}
}
void get_message(SEQUENLIST *a)
{
DATATYPE x;
int i;
system("cls");
cout<<"请输入要插入的数据:";
cin>>x;
cout<<"请输入要插入的位置:";
cin>>i;
insert(a,x,i);
}
void display(SEQUENLIST *a)
{
int index;
system("cls");
for(index=0;index<a->last;++index)
cout<<a->datas[index]<<endl;
}
void insert(SEQUENLIST *a,DATATYPE x,int i)
{
int k;
if(a->last>=MAXSIZE)
cout<<"溢出错误!"<<endl;
else if(i<1||i>a->last+1)
cout<<"插入位置错误!"<<endl;
else
{
for(k=a->last;k>=i-1;--k)
a->datas[k+1]=a->datas[k];
a->datas[i-1]=x;
a->last=a->last+1;
}
}
#5
编的别见笑,学的不久,共同进步.a是指针类型,是保存malloc开辟的内存空间的地址.
#6
哦,差点忘了.再加个free.
case '3':
{
free(a);
exit(0);
}
呵呵,你贴回去运行看看吧.这个是手工输入的.
case '3':
{
free(a);
exit(0);
}
呵呵,你贴回去运行看看吧.这个是手工输入的.
#7
非常感谢呀基本上都明白了,你学这个多久了呀,还有做这个题时先要想的是什么呢
#8
你加的那个FREE是什么意思是好象没有定义的呀
#9
free没有定义是什么意思?
free就是free,和malloc搭配的
free就是free,和malloc搭配的
#10
SEQUENLIST *a=(SEQUENLIST *)malloc(sizeof(SEQUENLIST));这一句大概的意思我知道不是很明白是不是始化这一个顺序表为其申请空间呀,不明白?
free(a);这是不是一个库函数,不明白,没看你定义呀
exit(0);这是不是一个库函数,不明白,没看你定义呀
system("cls");这是不是一个库函数,不明白,没看你定义呀
就只有这么一点不明白了,
对了在运行这一个程序的时候为什么只能输出其中一个就是我自己输入的那一个数据不能输出其它的数据呢就是说不能打顺序表中的所有数据全都输出呀,哎,太菜了
free(a);这是不是一个库函数,不明白,没看你定义呀
exit(0);这是不是一个库函数,不明白,没看你定义呀
system("cls");这是不是一个库函数,不明白,没看你定义呀
就只有这么一点不明白了,
对了在运行这一个程序的时候为什么只能输出其中一个就是我自己输入的那一个数据不能输出其它的数据呢就是说不能打顺序表中的所有数据全都输出呀,哎,太菜了
#11
我学习也没多久的,共同进步吧,我在这里也和别人学习了许多东西.
malloc()分配空间,当然就需要free()和他搭配来释放动态申请的空间.
exit()是推出程序的函数,需要返还给操作系统一个值,0为正常推出.
system()是调用系统的命令,以前的dos命令可以用的,例如cls是清屏的,你还可以加入
system("pause");就是让系统暂停,按任意键后继续,你甚至还可以调用system("dir");
哈哈
以上的函数不是自己定义的,只需要知道怎么调用就可以.
我的程序能输出所有的数据啊,我用的是循环.你有可能只插入一个值就去显示查看了,你试着多插入几个值,再显示,他们就会从上倒下排列出来.
加油吧兄弟,新年好运.
malloc()分配空间,当然就需要free()和他搭配来释放动态申请的空间.
exit()是推出程序的函数,需要返还给操作系统一个值,0为正常推出.
system()是调用系统的命令,以前的dos命令可以用的,例如cls是清屏的,你还可以加入
system("pause");就是让系统暂停,按任意键后继续,你甚至还可以调用system("dir");
哈哈
以上的函数不是自己定义的,只需要知道怎么调用就可以.
我的程序能输出所有的数据啊,我用的是循环.你有可能只插入一个值就去显示查看了,你试着多插入几个值,再显示,他们就会从上倒下排列出来.
加油吧兄弟,新年好运.
#12
我好多都不明白的哦你懂得还真多呀谢谢哦