实验二:线性表实验

一..实验目的

巩固线性表的数据结构,学会线性表的应用。

1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。

2.学习运用线性表的知识来解决实际问题。

3.进一步巩固程序调试方法。

4.进一步巩固模板程序设计。

二..实验内容

1.建立一个N个学生成绩的顺序表,对表进行插入、删除、查找等操作。分别输出结果。

要求如下:

1)用单链表来实现。

三..实验代码

 

#include<iostream.h>
struct Node
{
 int data;
 Node *next;
};
class Student{
public:Student();
    Student(int a[],int n);
    void Length();
    void Get(int i);
    void Locate(int x);
    void Insert(int i,int x);
    int Delete(int i);
    void Print();
private:   Node *first,*s,*r;
};
Student::Student()
{
 first=new Node;
 first->next=NULL;
}
Student::Student(int a[],int n)
{
 first=new Node;
 r=new Node;
 r=first;
for(int i=0;i<n;i++)
{
 s=new Node;
 s->data=a[i];
 r->next=s;
 r=s;
}
r->next=NULL;
}
void Student::Length()
{
 int count=0;
 s=first->next;
 if(s!=NULL)
 {
  s=s->next;
     count++;
 }
 cout<<"单链表的长度为:"<<count<<endl;
}
void Student::Get(int i)
{
 s=new Node;
 s=first->next;int count=1;
 while(s!=NULL&&i>count)
 {s=s->next;
 count++;}
 cout<<"元素序号为"<<i<<"的数据为:"<<s->data<<endl;
}
void Student::Locate(int x)
{
 s=new Node;
 int i=1;
 s=first->next;
 while(s!=NULL)
 {
 if(x==s->data) cout<<"查找值为"<<x<<"的元素序号为:"<<i<<endl;
  i++;
  s=s->next;
 }
 
}
void Student::Insert(int i,int x)
{
 r=first;int count=0;
 while(r!=NULL&&count<i-1)
 {
 r=r->next;
 count++;
 }
 if(r==NULL)throw'位置';
  else{
 s=new Node;
 s->data=x;
 s->next=r->next;
 r->next=s;}
}
int Student::Delete(int i)
{
 r=first;int count=0;int x;
 while(r!=NULL&&count<i-1)
 {r=r->next;
 count++;
 }
 if(r==NULL||r->next==NULL)throw'异常';
 else{s=new Node;
 s=r->next;
  x=s->data;
 r->next=s->next;
 delete s;
 return x;
}}
void Student::Print()
{
 r=first->next;
 cout<<"学生的成绩为:";
 while(r!=NULL)
 {
 cout<<r->data<<" ";
 r=r->next;
 }
 cout<<endl;
}
void main()
{
 int a[10]={10,9,8,7,6,5,4,3,2,1};
 Student s1(a,10);
 s1.Length();
 s1.Get(3);
 s1.Locate(8);
 s1.Insert(3,8);
 s1.Delete(3);
 s1.Print();
}


 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值