#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define Initsize 50
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
typedef struct{
int *data;
int Maxsize;//最大容量
int length;//当前长度
}List;//动态存储
typedef struct{
int data[50];
int length;
}list;//静态存储
void InitList(List &L,int n);//初始化
void Increasesize(List &L,int len);//增大线性表大小(动态)
bool Listinsert(List &L,int n,int e);//插入
bool Listdelect(List &L,int n,int &e);//删除
int Locateelem(List &L,int e);//按值查找
int main(int argc, char** argv) {
int n,x,e;
cin >> n;//输入
List L;
InitList(L,n);
// cin >> x >> e;//插入位置和值
// if(Listinsert(L,x,e) == true)
// cout << "插入成功" << endl;
// cin >> x;
// e=-1;
// if(Listdelect(L,x,e))
// printf("已删除第%d个元素,该值为%d\n",x,e);
// cout << Locateelem(L,4) << endl;
for(int i=0;i<L.length;i++)//输出
//cout << L.data[i] << endl;
printf("%d ",L.data[i]);
return 0;
}
void InitList(List &L,int n){
int x;
L.length = n;
L.Maxsize = Initsize;
L.data = (int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++){
scanf("%d",&x);
L.data[i]=x;
}
}
void Increasesize(List &L,int len){
int *p = L.data;
L.data = (int*)malloc((L.Maxsize+len)*sizeof(int));
for(int i=0;i<L.length;i++){
L.data[i]=p[i];//将数据复制到新的增大区域
}
L.Maxsize=L.Maxsize+len;
free(p);
}
bool Listinsert(List &L,int n,int e){
if(n<1||n>L.length+1)//n范围是否有效
return false;
if(L.length>=L.Maxsize)//超出定义范围
return false;
for(int i=L.length;i>=n;i--)
L.data[i]=L.data[i-1];//把大于等于n的后移
L.data[n-1]=e;
L.length++;
return true;
}
bool Listdelect(List &L,int n,int &e){
if(n<1||n>L.length)//n范围是否有效
return false;
e = L.data[n-1];
for(int i=n;i<L.length;i++)
L.data[i-1]=L.data[i];
L.length--;
return true;
}
int Locateelem(List &L,int e){
for(int i=0;i<L.length;i++)
if(L.data[i]==e)
return (i+1);
return 0;
}
数据结构:顺序表定义及相关操作
于 2023-07-02 14:15:49 首次发布