赞
踩
学习笔记,仅供参考
- //顺序表的实现——动态分配
- #include<stdio.h>
- #include<stdlib.h>
- #define InitSize 10
- typedef struct{
- int *data;
- int MaxSize;
- int length;
- }SeqList;
- //初始化一个顺序表
- void InitList(SeqList &L){
- //使用malloc函数申请一片连续的存储空间
- L.data = (int*)malloc(InitSize*sizeof(int));
- L.length = 0;
- L.MaxSize = InitSize;
- }
- //增加值
- void AddValue(SeqList &L,int num){
- for (int i = 0;i<num;i++){
- scanf("%d",&L.data[i]);
- L.length++;
- }
- }
判断所给的下标是否越界。
- //根据下标取值
- bool GetElem(SeqList &L,int num,int &e){
- if (num<1 || num>L.length) return false;
- e = L.data[num-1];
- return true;
- }
- //查找
- int LocateElem(SeqList &L,int y){
- for (int i = 0;i<L.length;i++){
- if(L.data[i] == y) return i+1;
- }
- return 0;
- }
判断是否越界,同时L.length为前置++。
- //插入
- bool ListInsert(SeqList &L,int k,int kl){
- if (kl<1 || kl>L.length+1) return false;
- if (L.length == L.MaxSize) return false;
- for(int i = L.length-1;i>=kl-1;i--){
- L.data[i+1] = L.data[i];
- }
- L.data[kl-1] = k;
- ++L.length;
- return true;
- }
- //删除
- bool ListDelet(SeqList &L,int num){
- if (num<1 || num>L.length) return false;
- for(int i = num;i<L.length;i++){
- L.data[i-1] = L.data[i];
- }
- --L.length;
- return true;
- }
- //动态增加数组的长度
- void IncreaseSize(SeqList &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);
- }
- //顺序表的实现——动态分配
- #include<stdio.h>
- #include<stdlib.h>
- #define InitSize 10
- typedef struct{
- int *data;
- int MaxSize;
- int length;
- }SeqList;
- //初始化一个顺序表
- void InitList(SeqList &L){
- //使用malloc函数申请一片连续的存储空间
- L.data = (int*)malloc(InitSize*sizeof(int));
- L.length = 0;
- L.MaxSize = InitSize;
- }
-
- //增加值
- void AddValue(SeqList &L,int num){
- for (int i = 0;i<num;i++){
- scanf("%d",&L.data[i]);
- L.length++;
- }
- }
-
- //根据下标取值
- bool GetElem(SeqList &L,int num,int &e){
- if (num<1 || num>L.length) return false;
- e = L.data[num-1];
- return true;
- }
-
- //查找
- int LocateElem(SeqList &L,int y){
- for (int i = 0;i<L.length;i++){
- if(L.data[i] == y) return i+1;
- }
- return 0;
- }
-
- //插入
- bool ListInsert(SeqList &L,int k,int kl){
- if (kl<1 || kl>L.length+1) return false;
- if (L.length == L.MaxSize) return false;
- for(int i = L.length-1;i>=kl-1;i--){
- L.data[i+1] = L.data[i];
- }
- L.data[kl-1] = k;
- ++L.length;
- return true;
- }
-
- //删除
- bool ListDelet(SeqList &L,int num){
- if (num<1 || num>L.length) return false;
- for(int i = num;i<L.length;i++){
- L.data[i-1] = L.data[i];
- }
- --L.length;
- return true;
- }
-
- //动态增加数组的长度
- void IncreaseSize(SeqList &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);
- }
-
- int main(){
- SeqList L;
- int n,x;
- printf("请输入你要增加几条数据:");
- InitList(L);
- scanf("%d",&n);
- //增加值
- AddValue(L,n);
-
- printf("当前的数据为:") ;
- for(int i = 0;i<L.length;i++){
- printf("%d ",L.data[i]);
- }
- printf("\n");
- printf("当前顺序表的长度为:%d\n",L.length);
-
- //根据下标找值
- int e;
- printf("请输入你要取第几个值:");
- scanf("%d",&x);
- if (GetElem(L,x,e)) printf("找到的第%d个值为%d\n",x,e);
- else printf("没有找到\n");
- //查找
- int y;
- printf("请输入你要查找的值:");
- scanf("%d",&y);
- if (LocateElem(L,y)) printf("%d在第%d位置上\n",y,LocateElem(L,y));
- else printf("没有找到\n");
- //插入
- int k,kl;
- printf("请输入你要插入的值以及插入的位置:");
- scanf("%d %d",&k,&kl);
- if(ListInsert(L,k,kl)) printf("现在第%d位置上的值变为了%d\n",kl,k);
- else printf("插入失败\n");
-
- printf("当前的数据为:") ;
- for(int i = 0;i<L.length;i++){
- printf("%d ",L.data[i]);
- }
- printf("\n");
- printf("当前顺序表的长度为:%d\n",L.length);
-
- //删除
- int sc;
- printf("请输入你要删除第几个数据:");
- scanf("%d",&sc);
- if(ListDelet(L,sc)) printf("删除成功\n");
- else printf("删除失败\n");
-
- printf("当前的数据为:") ;
- for(int i = 0;i<L.length;i++){
- printf("%d ",L.data[i]);
- }
- printf("\n");
- printf("当前顺序表的长度为:%d\n",L.length);
-
- //增加顺序表长度
- int l;
- printf("请输入你要增加的长度:");
- scanf("%d",&l);
- IncreaseSize(L,l);
- printf("当前顺序表的最大长度为:%d\n",L.MaxSize);
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。