#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#define MaxSize 50
typedef int ElemType;
//1.静态顺序存储
typedef struct{
ElemType data[MaxSize];
int length;
}SqList;
//1.1插入操作
bool ListInsert(SqList &L,int i,ElemType e){
//判断i的范围是否有效
if(i<1||i>L.length+1){
return false;
}
//当前存储空间已满,不能插入
if(L.length>=MaxSize){
return false;
}
//第i个元素及以后的元素后移
for(int j=L.length;j>=i;j++){
L.data[j]=L.data[j-1];
}
//在位置i放入e
L.data[i-1]=e;
//线性表长度加1
L.length++;
return true;
}
//1.2删除操作
bool ListDelete(SqList &L,int i,ElemType &e){
if(i<1||i>L.length){
return false;
}
//将被删除的元素赋值给e
e=L.data[i-1];
//将第i个位置之后的元素前移
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
//1.3逆转顺序表中的所有元素
void Reverse(int A[],int n){
int t;
for(int i=0;i<n/2;i++){
t=A[i];
A[i]=A[n-i-1];
A[n-i-1]=t;
}
}
//2.单链表
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//2.1头插法
LinkList CreatList1(LinkList &L){
//辅助指针
LNode *s;
int x;
//创建头结点
L=(LinkList)malloc(sizeof(LNode));
//初始为空链表
L->next=NULL;
//输入节点的值
scanf("%d",&x);
while(x!=9999){
//创建新的节点
s=(LNode*)malloc(sizeof(LNode));
//将新的节点s插入表中,L为头指针
s->data=x;