顺序表的各种操作

14天阅读挑战赛
努力是为了不平庸~

目录

构建结构体 

 初始化

输入数据

查找第X个元素

在表的第i个位置,插入元素x

删除表的第i个元素

修改第i个元素为x

求表的长度 

输出顺序表

顺序表的优点:

顺序表的缺点:


构建结构体 

typedef struct aqlist
{
	int* data;
	int length;
}aqlist;

 初始化

void initlist(aqlist& l)
{
	l.data = new int[MAX];
	l.length = 0;
}

输入数据

void ListInput(aqlist &L, char filename[]) 
               //与源代码同级目录下的文件filename中输入数据,把数据读入到线性表L中
 {
   int i = 0;
     fstream file;			//构造fstream类的对象file,你可以理解为是一个有操作的ADT
     file.open(filename);    //使用file对象中的open操作打开filename中的文件
   if(!file) 				//如果没见不存在则返回空,输出找不到文件的提示信息
         {
             cout << "未找到相关文件,无法打开!" << endl;
             exit(ERROR);
         }
     while (!file.eof()) 	
            //使用file对象中判断文件中数据是否结束的方法eof。如果到达文件结尾返回true,否
            //?false
         {
             file >> L.data[i];	//文件中的数据流式输入到线性表中
             i++;
         }
     L.length = i;			//更新线性表表长
 }

查找第X个元素

int search(aqlist& l, int x)
{
	return l.data[x - 1];
}

在表的第i个位置,插入元素x

void insert(aqlist& l, int i, int x)
{
	for (int j = l.length - 1; j >= i - 1; j--)
		l.data[j + 1] = l.data[j];
	l.data[i - 1] = x;
	l.length++;
}

删除表的第i个元素

void shanchu(aqlist& l, int i)
{
	for (int j = i; j <= l.length - 1; j++)
		l.data[j - 1] = l.data[j];
	l.length--;
}

修改第i个元素为x

void xiugai(aqlist& l, int i, int x)
{
	l.data[i - 1] = x;
}

求表的长度 

void length(aqlist &l)
 {
 	int  i=0;
 	while(l.data[i]!=NULL)
 	{
 		i++;
	 }
	l.length=i;
}

 

输出顺序表

void ListOutput(aqlist l)
{
	for(int i=0;i<l.length;i++)
	{
		cout<<l.data[i]<<" ";
	}
	cout<<endl;
 } 

顺序表的优点:

(1)无须增加额外的存储空间表示结点间的逻辑关系。 

(2)可以方便地随机存取表中任一结点。

顺序表的缺点:

(1)插入和删除运算不方便,通常须移动大量结点,效率较低。

(2)难以进行连续的存储空间的预分配,尤其是当表变化较大时。
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值