#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
#define data 100
typedef struct L l;
typedef struct L
{
int a[data];
int b;
int c;
char name[data];
int age[data];
};
L student;
void f1(l *p,int n)
{
// if((p->a=(int *)malloc(n*sizeof(p->a)))==NULL)
//{
// printf(“内存申请错误!\n”);
// exit(-1);
// }
p->b=0;
p->c=n;
}
int f2(l *p,int i,char T,int w,int j)
{
int q;
if(p->c==p->b)
return -1;
if(j<0)
j=0;
if(j>p->b)
j=p->b;
for(q=p->b-1;q>=j;q–)
{
p->a[q+1]=p->a[q];
p->name[q+1]=p->name[q];
p->age[q+1]=p->age[q];
}
p->a[j]=i;
p->name[j]=T;
p->age[j]=w;
p->b++;
return 0;
}
void f3(l *p)
{
int q;
for(q=0;q<p->b;q++)
{printf(“学号:%d\n”,p->a[q]);
printf(“姓名:%c\n”,p->name[q]);
printf(“年龄:%d\n”,p->age[q]);
}
}
int f4(l *p,int i)
{
int q;
for(q=0;q<p->b;q++)
if(p->a[q]==i)
return q;
return -1;
}
int f5(l *p,int i)
{
int q,t;
for(q=0;q<p->b;q++)
if(p->a[q]==i)
break;
if(q<p->b)
{
for(t=q;t<p->b-1;t++)
p->a[t]=p->a[t+1];
p->b–;
return q;
}
return 0;
}
int f6(l *p,int j)
{
int q;
if(j<0||j>p->b)
{
printf(“位置错误!\n”);
return -1;
}
for(q=j;q<p->b-1;q++)
p->a[q]=p->a[q+1];
p->b–;
return 0;
}
int main()
{
l pp;
l *e;
int q,t;
int item;
int A,C;
char B;
printf(“元素地址为%d\t元素长度为%d\t元素个数为%d\n”,pp.a,pp.b,pp.c);
f1(&pp,data);
printf(“元素地址为%d\t元素长度为%d\t元素个数为%d\n”,pp.a,pp.b,pp.c);
for(;;)
{ printf(“1、插入元素\t2、查找元素\t3、删除指定元素\t4、删除指定元素位置\t0、结束\n”);
scanf(“%d”,&item);
if(item==1)
{
while(1)
{
printf(“请输入学号\n”);
fflush(stdin);
scanf(“%d”,&A);
if(A==0)
break;
printf(“请输入姓名\n”);
fflush(stdin);
scanf(“%s”,&B);
if(B==0)
break;
printf(“请输入年龄\n”);
fflush(stdin);
scanf(“%d”,&C);
if(C==0)
break;
printf(“请输入插入位置!\n”);
fflush(stdin);
scanf(“%d”,&t);
f2(&pp,A,B,C,t-1);
printf(“学生信息管理系统:\n”);
f3(&pp);
}
}
if(item==2)
{
while(1)
{
printf(“请输入查找元素值,输入0结束查找操作!\n”);
fflush(stdin);
scanf(“%d”,&q);
if(q==0)
break;
t=f4(&pp,q);
if(t<0)
printf(“没有找到满足条件的元素值!\n”);
else
printf(“找到满足条件的元素值,位置为%d\n”,t+1);
}
}
if(item==3)
{
while(1)
{
printf(“请输入删除元素值,输入0结束删除操作!\n”);
fflush(stdin);
scanf(“%d”,&q);
if(q==0)
break;
t=f5(&pp,q);
if(t<0)
printf(“没有找到符合条件的元素值!\n”);
else
{
printf(“找到满足条件的元素值,位置为%d”,t+1);
printf(“线性表为:\n”);
f3(&pp);
}
}
}
if(item==4)
{
while(1)
{
printf(“请输入删除元素位置,输入0结束删除操作!\n”);
fflush(stdin);
scanf(“%d”,&t);
if(t==0)
break;
q=f6(&pp,t);
if(q<0)
printf(“没有找到符合人条件的元素值!\n”);
else
{
printf(“找到符合人条件的元素值,位置为%d”,t+1);
printf(“线性表为:\n”);
f3(&pp);
}
}
}
if(item==0)
exit(0); }
return 0;
}
1
2
2
27
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> #define STU_NUM 100 typedef struct L l; struct L { int no[STU_NUM]; int b; int c; char name[STU_NUM][32]; int age[STU_NUM]; }; void init_info(l *p, int n) { p->b = 0; p->c = n; } int insert_info(l *p, int no, char *T, int w, int j) { int i; if(p->c == p->b) return -1; if(j < 0) j = 0; if(j > p->b) j = p->b; for(i = p->b-1; i >= j; i--) { p->no[i+1] = p->no[i]; strcpy(p->name[i+1], p->name[i]); p->age[i+1] = p->age[i]; } p->no[j] = no; strcpy(p->name[j], T); p->age[j] = w; p->b++; return 0; } void show_info(l *p) { int i; for (i = 0; i < p->b; i++) { printf("学号:%d\n",p->no[i]); printf("姓名:%s\n",p->name[i]); printf("年龄:%d\n",p->age[i]); } } int search_info(l *p,int i) { int q; for(q=0;q<p->b;q++) if(p->no[q] == i) return q; return -1; } int del_as_no(l *p, int no) { int i, j; for (i = 0; i < p->b; i++) if(p->no[i] == no) break; if (i < p->b) { for (j = i; j < p->b-1; j++) { p->no[j]=p->no[j+1]; strcpy(p->name[j], p->name[j+1]); p->age[j] = p->age[j+1]; } p->b--; return i; } return 0; } int del_as_idx(l *p, int idx) { int i; if (idx < 0 || idx > p->b) { printf("位置错误!\n"); return -1; } for (i = idx; i < p->b-1; i++) { p->no[i] = p->no[i+1]; strcpy(p->name[i], p->name[i+1]); p->age[i] = p->age[i+1]; } p->b--; return 0; } int main() { l pp; int q,t; int item; int A,C; char name[32]; printf("元素地址为%p\t元素长度为%d\t元素个数为%d\n", pp.no, pp.b, pp.c); init_info(&pp, STU_NUM); printf("元素地址为%p\t元素长度为%d\t元素个数为%d\n", pp.no,pp.b,pp.c); for (;;) { printf("1、插入元素\t2、查找元素\t3、删除指定元素\t4、删除指定元素位置\t0、结束\n"); scanf("%d", &item); if(item==1) { while(1) { printf("请输入学号\n"); fflush(stdin); scanf("%d", &A); if(A == 0) break; printf("请输入姓名\n"); fflush(stdin); scanf("%s", name); if (strlen(name) <= 0) break; printf("请输入年龄\n"); fflush(stdin); scanf("%d", &C); if(C == 0) break; printf("请输入插入位置!\n"); fflush(stdin); scanf("%d", &t); insert_info(&pp, A, name, C, t-1); printf("学生信息管理系统:\n"); show_info(&pp); } } if(item == 2) { while(1) { printf("请输入查找元素值,输入0结束查找操作!\n"); fflush(stdin); scanf("%d",&q); if(q==0) break; t = search_info(&pp, q); if(t < 0) printf("没有找到满足条件的元素值!\n"); else printf("找到满足条件的元素值,位置为%d\n",t+1); } } if(item == 3) { while(1) { printf("请输入删除元素值,输入0结束删除操作!\n"); fflush(stdin); scanf("%d",&q); if(q==0) break; t = del_as_no(&pp, q); if(t<0) printf("没有找到符合条件的元素值!\n"); else { printf("找到满足条件的元素值,位置为%d",t+1); printf("线性表为:\n"); show_info(&pp); } } } if(item==4) { while(1) { printf("请输入删除元素位置,输入0结束删除操作!\n"); fflush(stdin); scanf("%d",&t); if(t==0) break; q = del_as_idx(&pp,t); if (q < 0) { printf("没有找到符合人条件的元素值!\n"); } else { printf("找到符合人条件的元素值,位置为%d",t+1); printf("线性表为:\n"); show_info(&pp); } } } if(item==0) exit(0); } return 0; }
函数使用f1,f2,f3…,本人估计你过段时间再看这部分代码你也不知道f1,f2,f3…表示啥?
代码写出来除了要实现对应的功能也是让别人看的,让别人去帮你看也要别人首先了解你的代码功能,但是使用这样的函数名,谁看了都费解。总之,变量名和函数名一定要做到见名知义,假如想继续编程,或走的更远建议遵循这条规则。
代码风格建议注意下,该加空格的要加空格,该回车的要回车。
name不能直接赋值,但是可以借助库函数实现,例如strcpy,strncpy等等
改了许多,暂不一一罗列了,请查看上面的代码,有问题可以继续提出来。