#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#define list_init_size 10
#define max_size 100
typedef struct {
int* elem;//int*型元素
int length;//实际长度
int listsize;//最大长度
}sqlist;
void creatsqlist(sqlist &l)
{
l.elem=(int*)malloc(sizeof(int)*list_init_size);//开辟一个名为l的顺序表
if(!l.elem)//判断顺序表是否存在
exit(1);
l.length=0;
l.listsize=list_init_size;
}
void initsqlist(sqlist &l)
{
int* p;
int n;
cout<<"请输入顺序表元素数(1-9):"<<endl;//让用户输入顺序表元素个数
cin>>n;
p=l.elem;//p指向头指针
cout<<"请输入递增有序顺序表!"<<endl;
for(int i=0;i<n;i++)//逐个赋值
{
cin>>*p;
p++;
l.length++;
}
cout<<"输入的递增顺序表为:"<<endl;//打印出初始化的顺序表
for(i=0;i<n;i++)
cout<<l.elem[i]<<"\t";
cout<<endl;
}
void insertsqlist(sqlist &l)
{
int q;
cout<<"请输入要插入的数:";
cin>>q;
cout<<"您要插入的数是"<<q<<endl;
int *p;
p=&(l.elem[l.length-1]);
if(*p<q)//判断最后一个元素是否小于q,如果小于,就在把q插到最后。
{
l.elem[l.length]=q;
l.length++;
}
else
{
for(;*p>q;p--)//判断p指向的元素是否大于q
{
*(p+1)=*p;//如果p指向的元素大于q,就把p指向的元素后移
}
l.length++;//l的长度加1
*(p+1)=q;//此时p指向的元素小于q,所以把q的值赋予p指向的元素的下一个
}
cout<<"插入操作完成后的顺序表:"<<endl;
for(int i=0;i<l.length;i++)
cout<<l.elem[i]<<"\t"<<endl;
}
void main()//主函数
{
sqlist l;
creatsqlist(l);
initsqlist(l);
insertsqlist(l);
}
我用的参数都是&l
整个程序也没问题啊
不解
迷惑ing