赞
踩
目录
- //------顺序表初始化前n个数据------//
- bool CreateList(SqList &L,int n)
- {
- if(n<0||n>MAXSIZE) return false; //n值不合法
- for(int i=0; i<n; i++){
- scanf("%d",&L.elem[i]);
- L.length++;
- }
- return true;
- }
- //******************************创建一个长度为n的顺序表L******************************//
- #include<stdio.h>
- #define OK 1
- #define ERROR 0
- typedef int ElemType;
- typedef int Status;
- //------顺序表的存储结构------//
- #define MAXSIZE 100 //顺序表可能达到的最大长度
- typedef struct
- {
- ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
- int length; //当前长度
- }SqList; //顺序表的结构类型为SqList
-
-
- //------顺序表的初始化------//
- //-----【算法步骤】 -----//
- //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
- //2.将表的当前长度设为0。
- bool InitList(SqList &L)
- {
- //构造一个空的顺序表L
- L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if(!L.elem) return false; //存储分配失败退出
- L.length=0; //空表长度为0
- return true;
- }
-
- //------顺序表初始化前n个数据------//
- bool CreateList(SqList &L,int n)
- {
- if(n<0||n>MAXSIZE) return false; //n值不合法
- for(int i=0; i<n; i++){
- scanf("%d",&L.elem[i]);
- L.length++;
- }
- return true;
- }
-
- //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
- void PrintList(SqList L)
- {
- printf("当前顺序表中所有元素为:");
- for(int i=0; i<L.length; i++)
- {
- printf("%d ",L.elem[i]);
- }
- printf("\n");
- }
-
- //------创建顺序表函数------//
- void Create(SqList &L)
- {
- int n;
- bool flag;
- L.length=0;
- printf("请输入要创建的顺序表的长度:");
- scanf("%d",&n);
- printf("请输入依次输入%d个数(空格隔开):",n);
- flag=CreateList(L,n);
- if(flag){
- printf("顺序表创建成功!\n");
- PrintList(L);
- }
- else
- printf("输入长度不合法!\n");
- }
-
- //------创建主函数------//
- int main()
- {
- SqList L;
- InitList(L);
- Create(L);
- }
- //------顺序表的插入------//
- //-----【算法步骤】 -----//
- //1.判断插入位置i是否合法(i值的合法范围是1<=i<=n+1),若不合法则返回ERROR。
- //2.判断顺序表的存储空间是否已满,若满则返回ERROR。
- //3.将第n个至第i个位置的元素依次向后移动一个位置,空出第i个位置(i=n+1时无需移动)。
- //4.将要插入的新元素e放入到第i个位置。
- //5.表长加1。
- Status ListInsert(SqList &L, int i, int e)
- {
- //在顺序表L中第i个位置插入新的元素e,i值的合法范围是1<=i<=L.length+1
- if(i<1||(i>L.length+1)) return ERROR; //i值不合法
- if(L.length==MAXSIZE) return ERROR; //当前存储空间已满
- for(int j=L.length-1; j>=i-1; j--)
- L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
- L.elem[i-1]=e; //将新元素e放入第i个位置
- ++L.length; //表长加1
- return OK;
- }
- //******************************先创建一个长度为n的顺序表L,然后对顺序表L进行元素插入******************************//
- #include<stdio.h>
- #define OK 1
- #define ERROR 0
- typedef int ElemType;
- typedef int Status;
- //------顺序表的存储结构------//
- #define MAXSIZE 100 //顺序表可能达到的最大长度
- typedef struct
- {
- ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
- int length; //当前长度
- }SqList; //顺序表的结构类型为SqList
-
-
- //------顺序表的初始化------//
- //-----【算法步骤】 -----//
- //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
- //2.将表的当前长度设为0。
- bool InitList(SqList &L)
- {
- //构造一个空的顺序表L
- L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if(!L.elem) return false; //存储分配失败退出
- L.length=0; //空表长度为0
- return true;
- }
-
- //------顺序表初始化前n个数据------//
- bool CreateList(SqList &L,int n)
- {
- if(n<0||n>MAXSIZE) return false; //n值不合法
- for(int i=0; i<n; i++){
- scanf("%d",&L.elem[i]);
- L.length++;
- }
- return true;
- }
-
-
- //------顺序表的插入1------//
- //-----【算法步骤】 -----//
- //1.判断插入位置i是否合法(i值的合法范围是1<=i<=n+1),若不合法则返回ERROR。
- //2.判断顺序表的存储空间是否已满,若满则返回ERROR。
- //3.将第n个至第i个位置的元素依次向后移动一个位置,空出第i个位置(i=n+1时无需移动)。
- //4.将要插入的新元素e放入到第i个位置。
- //5.表长加1。
- Status ListInsert(SqList &L, int i, int e)
- {
- //在顺序表L中第i个位置插入新的元素e,i值的合法范围是1<=i<=L.length+1
- if(i<1||(i>L.length+1)) return ERROR; //i值不合法
- if(L.length==MAXSIZE) return ERROR; //当前存储空间已满
- for(int j=L.length-1; j>=i-1; j--)
- L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
- L.elem[i-1]=e; //将新元素e放入第i个位置
- ++L.length; //表长加1
- return OK;
- }
-
- //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
- void PrintList(SqList L)
- {
- printf("当前顺序表中所有元素为:");
- for(int i=0; i<L.length; i++)
- {
- printf("%d ",L.elem[i]);
- }
- printf("\n");
- }
-
- //------创建顺序表函数------//
- void Create(SqList &L)
- {
- int n;
- bool flag;
- L.length=0;
- printf("请输入要创建的顺序表的长度:");
- scanf("%d",&n);
- printf("请输入依次输入%d个数(空格隔开):",n);
- flag=CreateList(L,n);
- if(flag){
- printf("顺序表L创建成功!\n");
- PrintList(L);
- }
- else
- printf("输入长度不合法!\n");
- }
-
- //------插入顺序表函数------//
- void Insert(SqList &L)
- {
- int place;
- int e;
- bool flag;
- printf("请输入要插入的位置(从1开始)及元素:");
- scanf("%d%d",&place,&e);
- flag=ListInsert(L,place,e);
- if(flag)
- {
- printf("插入成功!!!\n");
- PrintList(L);
- }
-
- }
-
- //------创建主函数------//
- int main()
- {
- SqList L;
- InitList(L);
- Create(L);
- Insert(L);
- }
- //------顺序表的删除------//
- //-----【算法步骤】 -----//
- //1.判断删除位置i是否合法(i值的合法范围是1<=i<=n),若不合法则返回ERROR。
- //2.将第i+1个至第n个的元素依次向前移动一个位置(i=n时无需移动)。
- //3.表长减1。
- Status ListDelete(SqList &L,int i)
- {
- //在顺序表L中删除第i个元素,i值的合法范围是1<=i<=L.length
- if(i<1||(i>L.length)) return ERROR; //i值不合法
- for(int j=i; j<=L.length-1; j++)
- L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
- --L.length; //表长减1
- return OK;
- }
- //******************************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行删除******************************//
- #include<stdio.h>
- #define OK 1
- #define ERROR 0
- typedef int ElemType;
- typedef int Status;
- //------顺序表的存储结构------//
- #define MAXSIZE 100 //顺序表可能达到的最大长度
- typedef struct
- {
- ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
- int length; //当前长度
- }SqList; //顺序表的结构类型为SqList
-
-
- //------顺序表的初始化------//
- //-----【算法步骤】 -----//
- //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
- //2.将表的当前长度设为0。
- bool InitList(SqList &L)
- {
- //构造一个空的顺序表L
- L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if(!L.elem) return false; //存储分配失败退出
- L.length=0; //空表长度为0
- return true;
- }
-
- //------顺序表初始化前n个数据------//
- bool CreateList(SqList &L,int n)
- {
- if(n<0||n>MAXSIZE) return false; //n值不合法
- for(int i=0; i<n; i++){
- scanf("%d",&L.elem[i]);
- L.length++;
- }
- return true;
- }
-
- //------顺序表的删除------//
- //-----【算法步骤】 -----//
- //1.判断删除位置i是否合法(i值的合法范围是1<=i<=n),若不合法则返回ERROR。
- //2.将第i+1个至第n个的元素依次向前移动一个位置(i=n时无需移动)。
- //3.表长减1。
- Status ListDelete(SqList &L,int i)
- {
- //在顺序表L中删除第i个元素,i值的合法范围是1<=i<=L.length
- if(i<1||(i>L.length)) return ERROR; //i值不合法
- for(int j=i; j<=L.length-1; j++)
- L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移
- --L.length; //表长减1
- return OK;
- }
-
- //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
- void PrintList(SqList L)
- {
- printf("当前顺序表中所有元素为:");
- for(int i=0; i<L.length; i++)
- {
- printf("%d ",L.elem[i]);
- }
- printf("\n");
- }
-
- //------创建顺序表函数------//
- void Create(SqList &L)
- {
- int n;
- bool flag;
- L.length=0;
- printf("请输入要创建的顺序表的长度:");
- scanf("%d",&n);
- printf("请输入依次输入%d个数(空格隔开):",n);
- flag=CreateList(L,n);
- if(flag){
- printf("顺序表L创建成功!\n");
- PrintList(L);
- }
- else
- printf("输入长度不合法!\n");
- }
-
- //------删除顺序表函数------//
- void Delete(SqList &L)
- {
- int place;
- bool flag;
- printf("请输入要删除的位置(从1开始):");
- scanf("%d",&place);
- flag=ListDelete(L,place);
- if(flag)
- {
- printf("删除成功!\n");
- PrintList(L);
- }
- }
-
- //------创建主函数------//
- int main()
- {
- SqList L;
- InitList(L);
- Create(L);
- Delete(L);
- }
- //------顺序表的查找(按值查找)------//
- //-----【算法步骤】 -----//
- //1.从第一个元素起,依次和e相比较,若找到与e相等的元素L.elem[i],则查找成功,返回该元素的序号i+1。
- //2.若查遍整个顺序表都没有找到,则查找失败,返回0。
-
- int LocateElem(SqList L, int e)
- {
- //在顺序表L中查找值为e的数据元素,返回其序号。
- for(int i=0; i<L.length;i++)
- if(L.elem[i]==e) return i+1; //查找成功,返回序号i+1。
- return 0; //查找失败,返回0。
- }
- //************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行按值查找*************//
- #include<stdio.h>
- #define OK 1
- #define ERROR 0
- typedef int ElemType;
- typedef int Status;
- //------顺序表的存储结构------//
- #define MAXSIZE 100 //顺序表可能达到的最大长度
- typedef struct
- {
- ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
- int length; //当前长度
- }SqList; //顺序表的结构类型为SqList
-
-
- //------顺序表的初始化------//
- //-----【算法步骤】 -----//
- //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
- //2.将表的当前长度设为0。
- bool InitList(SqList &L)
- {
- //构造一个空的顺序表L
- L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if(!L.elem) return false; //存储分配失败退出
- L.length=0; //空表长度为0
- return true;
- }
-
- //------顺序表初始化前n个数据------//
- bool CreateList(SqList &L,int n)
- {
- if(n<0||n>MAXSIZE) return false; //n值不合法
- for(int i=0; i<n; i++){
- scanf("%d",&L.elem[i]);
- L.length++;
- }
- return true;
- }
-
- //------顺序表的查找(按值查找)------//
- //-----【算法步骤】 -----//
- //1.从第一个元素起,依次和e相比较,若找到与e相等的元素L.elem[i],则查找成功,返回该元素的序号i+1。
- //2.若查遍整个顺序表都没有找到,则查找失败,返回0。
-
- int LocateElem(SqList L, int e)
- {
- //在顺序表L中查找值为e的数据元素,返回其序号。
- for(int i=0; i<L.length;i++)
- if(L.elem[i]==e) return i+1; //查找成功,返回序号i+1。
- return 0; //查找失败,返回0。
- }
-
- //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
- void PrintList(SqList L)
- {
- printf("当前顺序表中所有元素为:");
- for(int i=0; i<L.length; i++)
- {
- printf("%d ",L.elem[i]);
- }
- printf("\n");
- }
-
- //------创建顺序表函数------//
- void Create(SqList &L)
- {
- int n;
- bool flag;
- L.length=0;
- printf("请输入要创建的顺序表的长度:");
- scanf("%d",&n);
- printf("请输入依次输入%d个数(空格隔开):",n);
- flag=CreateList(L,n);
- if(flag){
- printf("顺序表L创建成功!\n");
- PrintList(L);
- }
- else
- printf("输入长度不合法!\n");
- }
-
- //------查找顺序表函数------//
- void Search(SqList L)
- {
- int e,flag;
- printf("请输入要查找的值:");
- scanf("%d",&e);
- flag=LocateElem(L,e);
- if(flag)
- {
- printf("该元素的位置为:%d\n",flag);
- printf("查找成功!");
- }
- else
- printf("未查找到该元素!");
- }
- //------创建主函数------//
- int main()
- {
- SqList L;
- InitList(L);
- Create(L);
- Search(L);
- }
- //------顺序表的查找(按位置查找)------//
- //-----【算法步骤】 -----//
- //1.判断指定的位置序号i值是否合理(1<=i<=L.length),若不合理,则返回ERROR。
- //2.若i值合理,则将第i个数据元素L.length[i-1]赋值给参数e,通过e返回第i个数据元素的传值。
-
- Status GetElem(SqList L, int i, int &e)
- {
- if(i<1||i>L.length) return ERROR; //判断i值是否合理
- e=L.elem[i-1]; //elem[i-1]单元存储第i个数据元素
- return OK;
- }
- //****************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行按位置查找****************//
- #include<stdio.h>
- #define OK 1
- #define ERROR 0
- typedef int ElemType;
- typedef int Status;
- //------顺序表的存储结构------//
- #define MAXSIZE 100 //顺序表可能达到的最大长度
- typedef struct
- {
- ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
- int length; //当前长度
- }SqList; //顺序表的结构类型为SqList
-
-
- //------顺序表的初始化------//
- //-----【算法步骤】 -----//
- //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
- //2.将表的当前长度设为0。
- bool InitList(SqList &L)
- {
- //构造一个空的顺序表L
- L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if(!L.elem) return false; //存储分配失败退出
- L.length=0; //空表长度为0
- return true;
- }
-
- //------顺序表初始化前n个数据------//
- bool CreateList(SqList &L,int n)
- {
- if(n<0||n>MAXSIZE) return false; //n值不合法
- for(int i=0; i<n; i++){
- scanf("%d",&L.elem[i]);
- L.length++;
- }
- return true;
- }
-
- //------顺序表的查找(按位置查找)------//
- //-----【算法步骤】 -----//
- //1.判断指定的位置序号i值是否合理(1<=i<=L.length),若不合理,则返回ERROR。
- //2.若i值合理,则将第i个数据元素L.length[i-1]赋值给参数e,通过e返回第i个数据元素的传值。
-
- Status GetElem(SqList L, int i, int &e)
- {
- if(i<1||i>L.length) return ERROR; //判断i值是否合理
- e=L.elem[i-1]; //elem[i-1]单元存储第i个数据元素
- return OK;
- }
-
- //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
- void PrintList(SqList L)
- {
- printf("当前顺序表中所有元素为:");
- for(int i=0; i<L.length; i++)
- {
- printf("%d ",L.elem[i]);
- }
- printf("\n");
- }
-
- //------创建顺序表函数------//
- void Create(SqList &L)
- {
- int n;
- bool flag;
- L.length=0;
- printf("请输入要创建的顺序表的长度:");
- scanf("%d",&n);
- printf("请输入依次输入%d个数(空格隔开):",n);
- flag=CreateList(L,n);
- if(flag){
- printf("顺序表L创建成功!\n");
- PrintList(L);
- }
- else
- printf("输入长度不合法!\n");
- }
-
- //------查找顺序表函数------//
- void Get(SqList L)
- {
- int e,i,flag;
- printf("请输入要查找的位置:");
- scanf("%d",&i);
- flag=GetElem(L,i,e);
- if(flag)
- {
- printf("该位置的元素为:%d\n",e);
- printf("查找成功!");
- }
- else
- printf("未查找到该元素!");
- }
- //------创建主函数------//
- int main()
- {
- SqList L;
- InitList(L);
- Create(L);
- Get(L);
- }
- //------顺序表L的倒置------//
- void ReverseList(SqList &L)
- {
- //顺序表L的逆置
- for(int i=0;i<L.length/2;i++) //
- {
- //交换数据
- int temp=L.elem[i];
- L.elem[i]=L.elem[L.length-1-i];
- L.elem[L.length-1-i]=temp;
- }
- }
- //******************************先创建一个长度为n的顺序表L,然后对顺序表L中的元素进行倒置******************************//
- #include<stdio.h>
- #define OK 1
- #define ERROR 0
- typedef int ElemType;
- typedef int Status;
- //------顺序表的存储结构------//
- #define MAXSIZE 100 //顺序表可能达到的最大长度
- typedef struct
- {
- ElemType *elem; //或ElemType elem[MAXSIZE] 存储空间的基地址
- int length; //当前长度
- }SqList; //顺序表的结构类型为SqList
-
-
- //------顺序表的初始化------//
- //-----【算法步骤】 -----//
- //1.为顺序表 L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
- //2.将表的当前长度设为0。
- bool InitList(SqList &L)
- {
- //构造一个空的顺序表L
- L.elem=new int[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if(!L.elem) return false; //存储分配失败退出
- L.length=0; //空表长度为0
- return true;
- }
-
- //------顺序表初始化前n个数据------//
- bool CreateList(SqList &L,int n)
- {
- if(n<0||n>MAXSIZE) return false; //n值不合法
- for(int i=0; i<n; i++){
- scanf("%d",&L.elem[i]);
- L.length++;
- }
- return true;
- }
-
- //------顺序表L的倒置------//
- void ReverseList(SqList &L)
- {
- //顺序表L的逆置
- for(int i=0;i<L.length/2;i++) //
- {
- //交换数据
- int temp=L.elem[i];
- L.elem[i]=L.elem[L.length-1-i];
- L.elem[L.length-1-i]=temp;
- }
- }
-
-
- //------输出打印顺序表 按位置从小到大输出顺序表所有元素------//
- void PrintList(SqList L)
- {
- printf("当前顺序表中所有元素为:");
- for(int i=0; i<L.length; i++)
- {
- printf("%d ",L.elem[i]);
- }
- printf("\n");
- }
-
- //------创建顺序表函数------//
- void Create(SqList &L)
- {
- int n;
- bool flag;
- L.length=0;
- printf("请输入要创建的顺序表的长度:");
- scanf("%d",&n);
- printf("请输入依次输入%d个数(空格隔开):",n);
- flag=CreateList(L,n);
- if(flag){
- printf("顺序表L创建成功!\n");
- PrintList(L);
- }
- else
- printf("输入长度不合法!\n");
- }
-
- //------倒置顺序表函数------//
- void Reverse(SqList L)
- {
- ReverseList(L);
- printf("顺序表L倒置后为:");
- for(int i=0; i<L.length; i++)
- {
- printf("%d ",L.elem[i]);
- }
- }
- //------创建主函数------//
- int main()
- {
- SqList L;
- InitList(L);
- Create(L);
- Reverse(L);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。