顺序表链表总结实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("查找 请输入4 \n");
printf("删除请输入5\n");
printf("列表请输入6\n");
printf("退出请按0\n");
printf(" 请输入");
scanf("%c",&q);
}
if(q=='1')
{
rewind(stdin);
liebiao(L);
goto ee;
printf("input shan chu jie dian xu hao :");
scanf("%d",&k);
if(k<=0||k>l)printf("error data!\n");
if(k==1){ x=p->next;
t=p;
free(t);}
if(k>1&&k<=l){ for(i=1;i<=k-2;i=i+1)p=p->next;
printf("请输入学生名字\n");
scanf("%s",L->data[k].xm);
printf("请输入学生成绩\n");
scanf("%d",&L->data[k].cj);
}
L->length=n;
}
void qb(SqList *L) //全部输出
{
int k,w;
for(k=0;k<L->length;k++)
xs=(DataType *)malloc(sizeof(DataType));
printf("请输入学生学号\n");
scanf("%s",xs->xh);
printf("请输入学生名字\n");
scanf("%s",xs->xm);
printf("请输入学生成绩\n");
scanf("%d",&xs->cj);
{
printf("请输入要查找学生的姓名:");
scanf("%s",xm);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xm,xm)==0)
return i;
}
}
if (u==3)
{
printf("请输入要查找学生的成绩:");
scanf("%s",cj);
{
w=k+1;
printf("第%d位学生:",w);
printf("%s %s %d\n",L->data[k].xh,L->data[k].xm,L->data[k].cj);
}
}
int cr(SqList *L,DataType *xs,int i) //插入信息
{
int j;
if(L->length==MaxSize)
}
if(q=='2')
{
rewind(stdin);
bc(L);
printf("共%d个学生\n",L->length);
goto ee;
}
if(q=='3')
{
rewind(stdin);
printf("插 入 \n");
printf("\t\t 请 输 入 要 添 加 的 学 生 信 息: \n");
{
goto ee;
}
system ("pause");
return 0;
}
主程序:
建表:
是否
查找:
是否
插入:
是否
是
否
删除:
是否
否是
列表:
是否
实验目的:学生管理系统(链表)
实验要求:1.建表
2.删除
3.列表
4.退出
源程序:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
printf(" 2、按 姓 名 删除 \n");
printf("请选择:");
fflush(stdin);
scanf("%d",&h);
if (h==1)
{
printf("请输入要删除学生的学号:");
scanf("%s",xh);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xh,xh)==0) //判断输入和已知学号一样不
q=(struct xuesheng *)malloc(sizeof(struct xuesheng));
printf("input xh:"); scanf("%s",(*q).xh);
printf("input xm:"); scanf("%s",(*q).xm);
printf("input cj:"); scanf("%d",&(*q).cj);
(*p).next=q;
(*q).next=0; }
printf("ni hai ji xu me? 1/2:");
scanf("%d",&c);
}
while(c==1);
return(x);
}
int link_len(struct xuesheng *x)
{
struct xuesheng *p;
int l=0;
struct xuesheng
{
char xh[7];
char xm[40];
int cj;
struct xuesheng *next;
};
struct xuesheng *cha_ru(struct xuesheng *x)
{
struct xuesheng *p,*q;
int c;
do
{
if(x==0){ x=(struct xuesheng *)malloc(sizeof(struct xuesheng));
ee:
rewind(stdin);
{
printf(" 学生管理系统 \n"); //函数的各个结构
printf("\n");
printf("\n");
printf("\n");
printf(" 建立表格请输入1\n");
printf("求表长 请输入2 \n");
printf("插入 请输入3\n");
printf("input xh:"); scanf("%s",(*x).xh);
printf("input xm:"); scanf("%s",(*x).xm);
printf("input cj:"); scanf("%d",&(*x).cj);
(*x).next=0; }
else{ p=x;
while((*p).next!=0){p=(*p).next;};
}
return 0;
}
int cz(SqList *L) //查找信息
{
char xh[40];
char xm[40];
int cj;
int i=0,u;
printf(" 1、按学号查询 \n");
printf(" 1、按姓名查询 \n");
printf(" 1、按成绩查询 \n");
printf("请选择:");
{
L->data[j].cj=L->data[j+1].cj; //就是后一个覆盖了前一个
strcpy(L->data[j].xh,L->data[j+1].xh);
strcpy(L->data[j].xm,L->data[j+1].xm);
}
L->length--;
printf("该学生信息已被删除!\n");
}
void sc(SqList *L) //删除函数
{
int i,j;
printf("请先选择您要删除的学生信息的方式:\n");
scanf("%d",&j);
i=cz2(L);
if(i==-1)
{
printf("没有查到要删除的学生信息");
return;
}
for(j=i;j<L->length;j++) // 要删除学生以后的学生整体上调一位
实验报告
实验目的:学生管理系统(顺序表)
实验要求:
1.建表
2.求表长
3.插入
4.查找
5.删除
6.列表
7.退出
源程序:
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#define MaxSize 1000
typedefstruct
{
char xh[40];
{
printf("没有!");
return 0;
}
else if((i<0)||(i>L->length))
{
printf("程序溢出,不符合");
return 0;
}
else
{
for(j=L->length-1;j>=i;j--)
{
strcpy(L->data[j+1].xh,L->data[j].xh);
return i;
}
}
else if (h==2)
{
printf("请输入要删除学生的姓名:");
scanf("%s",xm);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xm,xm)==0) //判断输入姓名和已知姓名一样不
return i;
}
}
return -1;
sc(L);
goto ee;
}
if(q=='6')
{rewind(stdin);
printf("列表 \n");
qb(L);
goto ee;
}
if(q=='0') {printf("谢谢使用\n");
}
if(!(q=='1'||q=='2'||q=='3'||q=='4'||q=='5'||q=='5'||q=='0'))
t=p->next;
for(i=1;i<=k;i=i+1)q=q->next;
p->next=q;
free(t); }
printf("vvvvvvv shan chu wan bi ! vvvvvvv\n");
char xm[40];
int cj;
}DataType; //学生的结构
typedef struct {
DataType data[MaxSize]; //定义表的数据类型
int length; //数据元素分别放置在data[0]到data[length-1]当中
} SqList; //表的结构
fflush(stdin);
scanf("%d",&u);
if (u==1)
{
printf("请输入要查找学生的学号:");
scanf("%s",xh);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xh,xh)==0)
return i;
}
}
if (u==2)
for(i=0;i<L->length;i++)
{
if(L->data[i].cj,&cj)
return i;
}
}
return -1;//*如果没找到,返回-1
}
int cz2(SqList *L) //删除查找的函数
{
char xh[40];
char xm[40];
int i=0,h;
printf(" 1、按 学 号 删除 \n");
void liebiao(SqList *L) //建立表格
{
int k,n;
char q;
printf("请输入,输入学生的个数:\n");
fflush(stdin);
scanf("%d",&n);
for(k=0;k<=n-1;k++)
{
printf("请输入学生学号\n");
scanf("%s",L->data[k].xh);
strcpy(L->data[j+1].xm,L->data[j].xm);
L->data[j+1].cj=L->data[j].cj;
}
strcpy(L->data[i].xh,xs->xh);
strcpy(L->data[i].xm,xs->xm);
L->data[i].cj=xs->cj;
L->length=L->length+1;
}
int bc(SqList *L)
{
return (L->length);
}
int main() //主体大函数
{
int i,k;
SqList *L; //定义顺序表的指针
DataType *xs;
L=(SqList *)malloc(sizeof(SqList)*MaxSize);
char q;
printf("请输入要插入的位置:\n");
rewind(stdin);
scanf("%d",&i);
cr(L,xs,i);
goto ee;
}
if(q=='4'){rewind(stdin);
printf(" 查 找 \n");
printf(" 查 询 学 生 信 息 \n");
i=cz(L);
if(i!=-1)
p=x;
if(p!=0)do{
l=l+1;
p=p->next;
}
while(p!=0);
return(ຫໍສະໝຸດ Baidu);
}
struct xuesheng *shan_chu(struct xuesheng *x)
{
struct xuesheng *p,*q,*t;
int k,l,i;
p=x;
q=x;
l=link_len(x);
{
printf("%s %s %d\n",L->data[i].xh,L->data[i].xm,L->data[i].cj);
}
else
{
printf("信息不存");
}
goto ee;
}
if(q=='5'){
rewind(stdin);
printf(" 删 除 \n");
printf(" 删 除 学 生 信 息 \n");
printf("删除请输入5\n");
printf("列表请输入6\n");
printf("退出请按0\n");
printf(" 请输入");
scanf("%c",&q);
}
if(q=='1')
{
rewind(stdin);
liebiao(L);
goto ee;
printf("input shan chu jie dian xu hao :");
scanf("%d",&k);
if(k<=0||k>l)printf("error data!\n");
if(k==1){ x=p->next;
t=p;
free(t);}
if(k>1&&k<=l){ for(i=1;i<=k-2;i=i+1)p=p->next;
printf("请输入学生名字\n");
scanf("%s",L->data[k].xm);
printf("请输入学生成绩\n");
scanf("%d",&L->data[k].cj);
}
L->length=n;
}
void qb(SqList *L) //全部输出
{
int k,w;
for(k=0;k<L->length;k++)
xs=(DataType *)malloc(sizeof(DataType));
printf("请输入学生学号\n");
scanf("%s",xs->xh);
printf("请输入学生名字\n");
scanf("%s",xs->xm);
printf("请输入学生成绩\n");
scanf("%d",&xs->cj);
{
printf("请输入要查找学生的姓名:");
scanf("%s",xm);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xm,xm)==0)
return i;
}
}
if (u==3)
{
printf("请输入要查找学生的成绩:");
scanf("%s",cj);
{
w=k+1;
printf("第%d位学生:",w);
printf("%s %s %d\n",L->data[k].xh,L->data[k].xm,L->data[k].cj);
}
}
int cr(SqList *L,DataType *xs,int i) //插入信息
{
int j;
if(L->length==MaxSize)
}
if(q=='2')
{
rewind(stdin);
bc(L);
printf("共%d个学生\n",L->length);
goto ee;
}
if(q=='3')
{
rewind(stdin);
printf("插 入 \n");
printf("\t\t 请 输 入 要 添 加 的 学 生 信 息: \n");
{
goto ee;
}
system ("pause");
return 0;
}
主程序:
建表:
是否
查找:
是否
插入:
是否
是
否
删除:
是否
否是
列表:
是否
实验目的:学生管理系统(链表)
实验要求:1.建表
2.删除
3.列表
4.退出
源程序:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
printf(" 2、按 姓 名 删除 \n");
printf("请选择:");
fflush(stdin);
scanf("%d",&h);
if (h==1)
{
printf("请输入要删除学生的学号:");
scanf("%s",xh);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xh,xh)==0) //判断输入和已知学号一样不
q=(struct xuesheng *)malloc(sizeof(struct xuesheng));
printf("input xh:"); scanf("%s",(*q).xh);
printf("input xm:"); scanf("%s",(*q).xm);
printf("input cj:"); scanf("%d",&(*q).cj);
(*p).next=q;
(*q).next=0; }
printf("ni hai ji xu me? 1/2:");
scanf("%d",&c);
}
while(c==1);
return(x);
}
int link_len(struct xuesheng *x)
{
struct xuesheng *p;
int l=0;
struct xuesheng
{
char xh[7];
char xm[40];
int cj;
struct xuesheng *next;
};
struct xuesheng *cha_ru(struct xuesheng *x)
{
struct xuesheng *p,*q;
int c;
do
{
if(x==0){ x=(struct xuesheng *)malloc(sizeof(struct xuesheng));
ee:
rewind(stdin);
{
printf(" 学生管理系统 \n"); //函数的各个结构
printf("\n");
printf("\n");
printf("\n");
printf(" 建立表格请输入1\n");
printf("求表长 请输入2 \n");
printf("插入 请输入3\n");
printf("input xh:"); scanf("%s",(*x).xh);
printf("input xm:"); scanf("%s",(*x).xm);
printf("input cj:"); scanf("%d",&(*x).cj);
(*x).next=0; }
else{ p=x;
while((*p).next!=0){p=(*p).next;};
}
return 0;
}
int cz(SqList *L) //查找信息
{
char xh[40];
char xm[40];
int cj;
int i=0,u;
printf(" 1、按学号查询 \n");
printf(" 1、按姓名查询 \n");
printf(" 1、按成绩查询 \n");
printf("请选择:");
{
L->data[j].cj=L->data[j+1].cj; //就是后一个覆盖了前一个
strcpy(L->data[j].xh,L->data[j+1].xh);
strcpy(L->data[j].xm,L->data[j+1].xm);
}
L->length--;
printf("该学生信息已被删除!\n");
}
void sc(SqList *L) //删除函数
{
int i,j;
printf("请先选择您要删除的学生信息的方式:\n");
scanf("%d",&j);
i=cz2(L);
if(i==-1)
{
printf("没有查到要删除的学生信息");
return;
}
for(j=i;j<L->length;j++) // 要删除学生以后的学生整体上调一位
实验报告
实验目的:学生管理系统(顺序表)
实验要求:
1.建表
2.求表长
3.插入
4.查找
5.删除
6.列表
7.退出
源程序:
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#define MaxSize 1000
typedefstruct
{
char xh[40];
{
printf("没有!");
return 0;
}
else if((i<0)||(i>L->length))
{
printf("程序溢出,不符合");
return 0;
}
else
{
for(j=L->length-1;j>=i;j--)
{
strcpy(L->data[j+1].xh,L->data[j].xh);
return i;
}
}
else if (h==2)
{
printf("请输入要删除学生的姓名:");
scanf("%s",xm);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xm,xm)==0) //判断输入姓名和已知姓名一样不
return i;
}
}
return -1;
sc(L);
goto ee;
}
if(q=='6')
{rewind(stdin);
printf("列表 \n");
qb(L);
goto ee;
}
if(q=='0') {printf("谢谢使用\n");
}
if(!(q=='1'||q=='2'||q=='3'||q=='4'||q=='5'||q=='5'||q=='0'))
t=p->next;
for(i=1;i<=k;i=i+1)q=q->next;
p->next=q;
free(t); }
printf("vvvvvvv shan chu wan bi ! vvvvvvv\n");
char xm[40];
int cj;
}DataType; //学生的结构
typedef struct {
DataType data[MaxSize]; //定义表的数据类型
int length; //数据元素分别放置在data[0]到data[length-1]当中
} SqList; //表的结构
fflush(stdin);
scanf("%d",&u);
if (u==1)
{
printf("请输入要查找学生的学号:");
scanf("%s",xh);
for(i=0;i<L->length;i++)
{
if(strcmp(L->data[i].xh,xh)==0)
return i;
}
}
if (u==2)
for(i=0;i<L->length;i++)
{
if(L->data[i].cj,&cj)
return i;
}
}
return -1;//*如果没找到,返回-1
}
int cz2(SqList *L) //删除查找的函数
{
char xh[40];
char xm[40];
int i=0,h;
printf(" 1、按 学 号 删除 \n");
void liebiao(SqList *L) //建立表格
{
int k,n;
char q;
printf("请输入,输入学生的个数:\n");
fflush(stdin);
scanf("%d",&n);
for(k=0;k<=n-1;k++)
{
printf("请输入学生学号\n");
scanf("%s",L->data[k].xh);
strcpy(L->data[j+1].xm,L->data[j].xm);
L->data[j+1].cj=L->data[j].cj;
}
strcpy(L->data[i].xh,xs->xh);
strcpy(L->data[i].xm,xs->xm);
L->data[i].cj=xs->cj;
L->length=L->length+1;
}
int bc(SqList *L)
{
return (L->length);
}
int main() //主体大函数
{
int i,k;
SqList *L; //定义顺序表的指针
DataType *xs;
L=(SqList *)malloc(sizeof(SqList)*MaxSize);
char q;
printf("请输入要插入的位置:\n");
rewind(stdin);
scanf("%d",&i);
cr(L,xs,i);
goto ee;
}
if(q=='4'){rewind(stdin);
printf(" 查 找 \n");
printf(" 查 询 学 生 信 息 \n");
i=cz(L);
if(i!=-1)
p=x;
if(p!=0)do{
l=l+1;
p=p->next;
}
while(p!=0);
return(ຫໍສະໝຸດ Baidu);
}
struct xuesheng *shan_chu(struct xuesheng *x)
{
struct xuesheng *p,*q,*t;
int k,l,i;
p=x;
q=x;
l=link_len(x);
{
printf("%s %s %d\n",L->data[i].xh,L->data[i].xm,L->data[i].cj);
}
else
{
printf("信息不存");
}
goto ee;
}
if(q=='5'){
rewind(stdin);
printf(" 删 除 \n");
printf(" 删 除 学 生 信 息 \n");