一、实验名称:单链表的基本操作
二、实验目的:
1、掌握线性表的定义;
2、掌握线性表的基本操作,如建立、查找、插入和删除等。
三、实验原理:
四、实验仪器:Devc++
五、实验内容与步骤:
定义一个包含学生信息(学号,姓名,成绩)的的单链表,使其具有如下功能:
(1) 根据指定学生个数,逐个输入学生信息;
(2) 逐个显示学生表中所有学生的相关信息;
(3) 根据姓名进行查找,返回此学生的学号和成绩;
(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);
(5) 给定一个学生信息,插入到表中指定的位置;
(6) 删除指定位置的学生记录;
(7) 统计表中学生个数。
六、实验代码如下
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
typedef struct {
char no[8]; //8位学号
char name[20]; //姓名
int price; //成绩
}Student;
typedef struct LNode{
Student data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
int A(LNode *L){//新增学生
int n,i;
LinkList L1,L2;
cout<<"输入学生人数:";
cin>>n;
L1=L;
cout<>L2->data.no>>L2->data.name>>L2->data.price;
L2->next=NULL;
L1->next=L2;
L1=L2;
}
system("pause");
}
int B(LNode *L){//显示学生
LinkList L1;
L1=L;
while(L1->next!=NULL){
L1=L1->next;
cout<<"学号:"<data.no<<" 姓名:"<data.name<<" 成绩"<data.price<>name;
LinkList L1;
L1=L;
while(L1->next!=NULL){
L1=L1->next;
if(strcmp(L1->data.name,name)==0)
cout<<"你要查询的是:\n"<<"学号:"<data.no<<" 姓名:"<data.name<<" 成绩"<data.price<>num;
LinkList L1;
L1=L;
for(int i=0;L1!=NULL&&inext;
}
if(L1!=NULL)
cout<<"你要查询的是:\n"<<"学号:"<data.no<<" 姓名:"<data.name<<" 成绩"<data.price<>n;
LinkList L1=L,L2;
if(!(L1->next!=NULL)||(i>n-1)){
printf("序号错误!\n");
system("pause");
return false;
}
while(L1&&(inext;
++i;
}
L2=new LNode;
cout<<"请依次输入学生的学号 姓名 成绩:\n";
cin>>L2->data.no>>L2->data.name>>L2->data.price;
L2->next=L1->next;
L1->next=L2;
cout<<"录入成功!\n";
system("pause");
}
int F(LNode *L){//删除
int n,i=0;
cout<<"请输入删除的位置:";
cin>>n;
LinkList L1=L,L2;
L2=new LNode;
while(L1&&(inext;
++i;
}
if(!(L1->next!=NULL)||(i>n-1)){
printf("序号错误!\n");
system("pause");
return false;
}
L2=L1->next;
L1->next=L2->next;
delete L2;
cout<<"删除成功!\n";
system("pause");
}
int main(){
int choice;
LinkList L;
L=new LNode;
L->next=NULL;
while(1){
system("CLS");
cout<<"菜单\n1 创建学生信息\n2 显示学生信息\n3 按姓名查询\n4 按位置查找\n5 添加\n6 删除\n0 退出\n";
cout<<"请选择操作项目:";
cin>>choice;
switch(choice){
case 1:
A(L);
break;
case 2:
B(L);
break;
case 3:
C(L);
break;
case 4:
D(L);
break;
case 5:
E(L);
break;
case 6:
F(L);
break;
case 0:
exit(1);
break;
}
}
return 0;
}
版权属于:晓沉
本文链接:https://moexc.com/code/2022-ds2.html
转载时须注明出处及本声名,除特殊说明,原创内容采用CC BY-NC-SA 4.0进行许可