数据结构 实验二 单链表的基本操作

09
Apr

数据结构 实验二 单链表的基本操作

一、实验名称:单链表的基本操作

二、实验目的:

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;
} 

添加新评论