扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
建立方法很多,线性表是顺序表的顺序存储结构,这里我给你写个简单的例子参考一下,只要理解了,怎么写都不会错:具体代码如下: #include typedef struct{ int data[100]; int length; }Seqlist;//定义Seq这个新的数据类型 void creat(Seqlist L);//建立线性表 void show(Seqlist L);//显示线性表 int main() { Seqlist L; L.length=0;//初始化线性表的长度为0 creat(L); show(L); return 0; } void creat(Seqlist L) { int a; printf("请输入要创建的元素的个数:\t"); scanf("%d",a); for(int i=0;i
成都创新互联公司网站建设由有经验的网站设计师、开发人员和项目经理组成的专业建站团队,负责网站视觉设计、用户体验优化、交互设计和前端开发等方面的工作,以确保网站外观精美、成都做网站、成都网站制作、成都外贸网站建设易于使用并且具有良好的响应性。
1、insert函数修改如下,
int insert(int x,int y, student *p1,student *p2)
{
int i,j,n;
student *p,*p3;
i=y;
n=x;
p=p1;
p3=p2;
if(i1||in)
{
printf("插入位置输入错误!\n");
return 0;
}
if(n=M)
{
printf("空间已满!\n");
return -1;
}
else
{ //下面语句都要在大括号之内哦
for(j=n;j=i-1;j--)
{stu[j+1]=stu[j];} //循环体执行后,先执行j--,然后跳出循环
*(p3+j+1)=*p; // j要+1才是真正要插入位置
return 1; //返回语句要放在最后哦
}
}
2、lookfor修改如下
void lookfor(int y,student *v1,int x)
{
student *p2;
int i,n,k;
int good = 0; //找到标志
k=y;
p2=v1;
n=x;
for(i=0;in;i++) //初值错误
{
if(k==(p2+i)-stu_number) //判断语句错误
{
printf("姓名:%s\n",stu[i].name );
printf("学号:%d\n",stu[i].stu_number);
printf("计算机成绩:%d\n",stu[i].stu_computer_grade );
printf("数学成绩:%d\n",stu[i].stu_math_grade );
printf("英语成绩:%d\n",stu[i].stu_english_grade );
printf("*************************\n");
good = 1; //找到标志
}
if (good == 0) //如果没有找到
{
printf("No fond!");
}
}
}
3、listdelete 修改
void listdelete(int x,int y,student *v)
{
int i,j,n;
student *p;
i=x;
n=y;
p=v;
if(i0||in)
printf("删除点错误!\n");
for(j=i-1;jn;j++) //初值错误
stu[j]=stu[j+1];
}
修改后程序已在VC中调试,没有内存错误
#include"stdio.h"
#include"malloc.h"
#include"iostream.h"
typedef int status;
typedef int elementype;
#define INITSIZE 100
#define INCREMENT 2
struct sqlist
{
elementype *elem;
int length;
int listsize;
};
//建立链表,并排列数据
status listinit(sqlist l)
{
int i=0,x,j,t;
l.elem=(elementype *)malloc(INITSIZE*sizeof(elementype));
if(!l.elem)
{
cout"建表失败"endl;
return 0;
}
l.length=0;
l.listsize=INITSIZE;
while(1)
{
cout"请输入数据(输入0时结束):";
cinx;
if(x==0) break;
l.elem[i]=x;
++l.length;
i++;
}
for(i=0;il.length-1;i++)
for(j=0;jl.length-i-1;j++)
if(l.elem[j]l.elem[j+1])
{
t=l.elem[j+1];
l.elem[j+1]=l.elem[j];
l.elem[j]=t;
}
cout"排序成功"endl;
return 1;
}
//插入数据
status listinsert(sqlist l,int i,elementype e)
{
elementype *p,*q,*newbase;
if(i1||il.length)
{
cout"i输入错误"endl;
return 0;
}
if(l.length=l.listsize)
{
newbase=(elementype*)realloc(l.elem,(l.listsize+INCREMENT)*sizeof(elementype));
if(!newbase)
{
cout"申请空间失败"endl;
return 0;
}
l.elem=newbase;
l.listsize=l.listsize+INCREMENT;
}
q=(l.elem[i-1]);
for(p=(l.elem[l.length-1]);p=q;--p)
{
*(p+1)=*p;
}
*q=e;
++l.length;
cout"插入成功";
return 1;
}
//删除数据
status listdelete(sqlist l,int i,elementype e)
{
elementype *p,*q;
if(i1||il.length)
{
cout"i输入错误"endl;
return 0;
}
p=(l.elem[i-1]);
e=*p;
q=l.elem+l.length-1;
for(++p;p=q;++p)
{
*(p-1)=*p;
}
--l.length;
cout"删除成功"endl;
free(e);
return 1;
}
//删除重复的数据
status listdeleterepeat(sqlist l)
{
int i,j;
elementype *p,*q,e;
for(i=0;il.length-1;i++)
for(j=i+1;jl.length-1;j++)
if(l.elem[i]==l.elem[j])
{
p=(l.elem[j]);
e=*p;
q=l.elem+l.length-1;
for(++p;p=q;++p)
{
*(p-1)=*p;
}
--l.length;
free(e);
j--;
}
return 1;
}
//输出顺序表数据
status displaylist(sqlist l)
{
int i;
cout"顺序表的数据为:"endl;
for(i=0;il.length;i++)
{
coutl.elem[i]" ";
}
coutendl;
return 1;
}
//查找数据
status locatelem(sqlist l,int x)
{
elementype *p;
int i=1;
p=l.elem;
while(il.length(*p++)!=x)
i++;
coutiendl;
return 1;
}
//清空列表
void listclear(sqlist l)
{
l.length=0;
}
//销毁顺序表
void listdestroy(sqlist l)
{
if(l.elem)
free(l.elem);
}
//求顺序表长度
status listlength(sqlist l)
{
cout"顺序表的长度为:"l.lengthendl;
return 1;
}
int main()
{
sqlist l;
int a,i,x;
elementype e;
cout"*************************************************"endl;
cout"* 顺序表的表示和实现 *"endl;
cout"*************************************************"endl;
do{
cout"*************************************************"endl;
cout"* 菜单 *"endl;
cout"* 1.建立顺序表 *"endl;
cout"* 2.插入数据 *"endl;
cout"* 3.删除数据 *"endl;
cout"* 4.删除重复数据 *"endl;
cout"* 5.清空数据 *"endl;
cout"* 6.查找数据 *"endl;
cout"* 7.顺序表的长度 *"endl;
cout"* 8.显示顺序表 *"endl;
cout"* 0.退出顺序表 *"endl;
cout"*************************************************"endl;
cout"输入你的选择:";
cina;
switch(a)
{
case 1: listinit(l);
displaylist(l);
break;
case 2: cout"请输入要插入数据的位置:";
cini;
cout"请输入要插入的数据元素:";
cine;
listinsert(l,i,e);
displaylist(l);
break;
case 3: cout"请输入要删除的数据的位置:";
cini;
listdelete(l,i,e);
displaylist(l);
break;
case 4: cout"删除前的数据为:";
displaylist(l);
listdeleterepeat(l);
cout"删除后的数据为:";
displaylist(l);
break;
case 5: cout"清空前为:";
displaylist(l);
cout"清空后为:";
listclear(l);
displaylist(l);
break;
case 6: cout"输入你要查找的数据:";
cinx;
cout"你要查找的数据的位置为:";
locatelem(l,x);
displaylist(l);
break;
case 7: cout"顺序表的长度为:";
listlength(l);
break;
case 8: displaylist(l);
break;
default: break;
}
}while(a!=0);
return 1;
}
/*
GY52122008
请输入插入字符 : -
请输入插入位置 : 7
GY5212-2008
Press any key to continue
*/
#include malloc.h
#include stdio.h
#include string.h
#define maxsize 100
typedef struct {
char *data;
int length;
}sqlist;
void initlist(sqlist *L) { //初始化顺序表
L = (sqlist *)malloc(sizeof(sqlist));
L-data = (char *)malloc(maxsize);
L-length = 0;
}
void createlist(sqlist *L,char a[],int n) { //建立顺序表
int i;
for(i = 0;i n;i++) L-data[i] = a[i];
L-length = n;
}
bool listinsert(sqlist *L,int i,char e) { //插入数据元素
int j;
if(i 1 || i L-length + 1) return false;
i--;
for(j = L-length;j i;j--) L-data[j] = L-data[j - 1];
L-data[i] = e;
L-length++;
return true;
}
bool listdelete(sqlist *L,int i,char e) { //删除数据元素
int j;
if(i 1 || i L-length) return false;
i--;
e = L-data[i];
for(j = 1;j L-length - 1;j++) L-data[j] = L-data[j + 1];
L-length--;
return true;
}
int listlength(sqlist *L) { //求线性表长度
return(L-length);
}
void destroylist(sqlist *L) {
free(L);
}
int locateelem(sqlist *L,char e) { //按元素查找
int i = 0;
while(i L-length L-data[i] != e) i++;
if(i = L-length) return 0;
else return i + 1;
}
void displist(sqlist *L) { //输出线性表
int i;
for(i = 0;i L-length;i++) printf("%c",L-data[i]);
printf("\n");
}
int main() {
int pos,len;
char ch,data[50] = "GY52122008";
sqlist *L;
initlist(L); // 先初始化
len = strlen(data);
createlist(L,data,len); // 创建表
displist(L);
printf("请输入插入字符 : ");
scanf("%c",ch);
printf("请输入插入位置 : ");
scanf("%d",pos);
if(listinsert(L,pos,ch)) displist(L);
else printf("插入操作失败。\n");
free(L-data);
free(L);
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流