自学内容网 自学内容网

数据结构-线性表

一 线性表

线性表

组成

顺序存储结构:数组

链式存储结构:链表
单链表
静态链表
循环链表
双向链表

操作

1 初始化
2 增
3 删
4 改
5 遍历
6 取出

顺序存储结构-数组:
#include <iostream>

using namespace std;

typedef struct {
int *p;
int data;
}L;
void  Make(L &l,int *a,int n)//创建数组 
{
l.data = n;
l.p = new int [20];
for(int i = 0;i < n;i++)
l.p[i] = a[i];
}

void Read(L &l)//遍历  
{
for(int i = 0;i < l.data;i++)
cout << l.p[i] << " ";
cout<<endl;
}
bool Add(L &l,int loc,int num)//增加数据 
{
if(loc < 0 || loc > l.data)//特殊条件 
{
cout << "out of boundary" << endl;
return false;
}
for(int j = l.data - 1;j >= loc - 1;j --)//移动 
{
l.p[j + 1] = l.p[j];
}
l.p[loc - 1] = num;
l.data++;//数组数据个数增加 
return true; 
} 

bool Delete(L &l,int loc)//删除数据
{
if(loc < 0 || loc > l.data)//特殊条件 
{
cout << "out of boundary" << endl;
return false;
}
for(int i = loc;i < l.data ;i++)//移动位置 
{
l.p[i - 1] = l.p[i];
}
l.data--;//数组数据个数减少 
return true;
} 

void Change(L &l,int loc,int num)
{
  if(loc < 0 || loc > l.data)//特殊条件 
{
cout << "out of boundary" << endl;
return false;
}
l.p[loc - 1] = num;
return true;
} 

void Destroy(L &l)//销毁数组 
{
delete [] l.p;
} 
int main()
{
int n;
cin >> n;
int i,a[n];
for(i = 0;i < n;i++)
cin >> a[i];
L l;
Make(l,a,n);//初始化 
Read(l);

int m,p;
cout<<"add location and data:"<<endl;
cin >> m >> p; 
Add(l,m,p);//增加 
Read(l);

int loc;
cout<<"What do you want to delete? Please input it's location:'"<<endl;
cin>>loc;
Delete(l,loc);//删除 
Read(l);

int loca,num;
cout<<"What do you want to change?input the location and data:"<<endl;
cin>>loca>>num;
Change(l,loca,num);//改变 
Read(l);

Destroy(l);//销毁 
return 0;
} 

原文地址:https://blog.csdn.net/m0_73777202/article/details/140353315

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!