间接寻址的实现

《数据结构》实验二:

                线性表综合实验

一.实验目的

     巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题

 

.实验内容

1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。

要求如下:

1)用顺序表来实现。

2)用单链表来实现。

3)用双链表实现。

4)用静态链表实现。

5)用间接寻址实现。

间接寻址的实现
#include
    
    
     
     
using namespace std;
const int MaxSize = 100;
struct Node    
{    
	int data;    
};
class Iadd{
	public:
		Iadd( );                         //构造函数,含头结点的空链表    
        Iadd(int a[], int n);      //构造函数,建立有n个元素的单链表    
        int Length(){ return length; }
	    int Get(int i);
	    int Locate(int x);
	    void Insert(int i,int x);
	    int Delete(int i);
        void PrintList();  
private:    
    Node *s[MaxSize];               //单链表的头指针    
    int length;  
};

void Iadd::PrintList()  //遍历操作 
{
	int i; 
	for( i=0;i
     
     
      
      data<<" ";
	}
}

Iadd::Iadd()  //无参构造函数 
{
	for(int i=0;i
      
      
       
       data = a[i];        //为每个数组指向结点填入数    
    }    
   length = n;    
}

int Iadd::Get(int i)  //按位查找 
{
	if(i<1 || i>length) throw"查找位置非法";
	else return s[i-1]->data;
}

int Iadd::Locate(int x) //按值查找 
{
	for(int i=0;i
       
       
        
        data==x) return i+1;
	return 0;  //查找失败,退出循环
}

void  Iadd::Insert(int i,int x)  //插入操作 
{
    int  j;
	if(length>=MaxSize) throw"上溢";
	if(i<1||i>length+1) throw"位置";
	for( j=length; j>i; j--)  s[j]=s[j-1];
	s[i-1]->data=x;
	length++;
}

int Iadd::Delete(int i)    //删除操作 
{
	int  j;
	if(length==0) throw"下溢";
	if(i<1||i>length)throw"位置";
	int x=s[i-1]->data;
	for(j=i;j
        
        
          >n; for(j=0;j 
         
           >d[j]; } Iadd Ia(d,n); while (1) { cout<<"\t\t\t\t\t********** 间接寻址的实现 **********"< 
          
            >tab; switch(tab) { case 1: { cout<<"\t\t\t\t\t1.输出学生成绩 :"; Ia.PrintList(); cout< 
           
             >loc; x=Ia.Get(loc); cout <<"\t\t\t\t\t要查找的成绩是:"< 
            
              < 
             
               >x; loc=Ia.Locate(x); cout<<"\t\t\t\t\t输入要查找成绩的位置是:"< 
              
                < 
               
                 >loc; cout<<"\t\t\t\t\t输入要插入的成绩:"; cin>>x; Ia.Insert(loc,x); cout< 
                
                  >loc; x=Ia.Delete(loc); cout< 
                 
                   <<"\t\t\t\t\t已被删除√"< 
                  
                    < 
                    
                   
                  
                 
                
               
              
             
            
           
          
        
       
       
      
      
     
     
    
    
执行结果截图:
1)录入并输出学生成绩

2)输出表长

3)按位查找

4)按值查找

5)插入操作

6)插入成功后输出成绩

7) 删除操作

8)插入成功后输出成绩


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值