## 数结构顺序表基本操作C语言/c++实现
2021/4/17 14:25:34
本文主要是介绍## 数结构顺序表基本操作C语言/c++实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数结构顺序表基本操作C语言/c++实现
作为一个大学生的我开始学数据结构非常困惑,因为C语言的基础也不是太好,本人读的大学是个二本,学校的教学,我想和我一样读的二本的同学都懂,读大学很多时候都是要靠自学的,刚开始学数据结构,看到那些代码都是一脸懵,不知到怎么运行怎么应用,后来一直在网上找答案,怎么去运行那些代码,我学的是C语言,而书本的是c++的,C语言不兼容C语言的,在网上也能找到C语言的,但格式和书上的有点不太一样,后来我总结,终于慢慢学会了,现在我自己写了和书本上的格式相似的,容易看懂,供那些像我一样学习理解较慢的同学参考,其中 参考了大部分代码总结写成
望同学们有自己的思考见解发在评论下
#代码中有一个删除的功能有点问题,如果有知道怎么解决的大神请告诉我一下。。
欢迎加入指导讨论
//用c语言实现 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define ERROR -1 #define OK 1 typedef int Status; typedef int ElemType; //类型定义 typedef struct { ElemType *elem; int length; }SqList; //初始化线性表 Status InitList(SqList *L) { L->elem=(ElemType*)malloc(sizeof(ElemType)); if(!L->elem) exit(ERROR); L->length=0; return OK; } //销毁线性表 Status DestroyList(SqList *L) { if(L->elem) {free(L->elem); L->elem=0; } return OK; } //清空线性表 Status ClearList(SqList *L) { L->length=0; return OK; } //判断线性表是否为空 Status ListEmpty(SqList *L) { if(L->length==0) return OK; else return ERROR; } //求线性表长度 Status LengthList(SqList L) { return (L.length); } //获取线性表中第i个元素内容 Status GetElem(SqList L,int i,ElemType *e) { if(L.length==0||i<1||i>L.length) return ERROR; *e=L.elem[i-1]; return OK; } //在线性表中第i个元素之前插入数据e Status ListInsert(SqList *L,int i,ElemType e) { int k; if(L->length==MAXSIZE||!L->elem) return ERROR; if(i<1||i>L->length+1) return ERROR; if(i<=L->length) { for(k=L->length;k>=i-1;k--) L->elem[k+1]=L->elem[k]; } L->elem[i-1]=e; L->length++; return OK; } //将线性表中第i个元素删除 Status ListDelete(SqList *L,int i,ElemType *e) { int k; if(L->length==0) return ERROR; if(i<1||i>L->length+1) return ERROR; *e=L->elem[i-1]; if(i<L->length) for(k=i;k<L->length;k++) L->elem[k-1]==L->elem[k]; L->length--; return OK; } //打印顺序表 Status ListTraverse(SqList *L) { int i; if(!L->elem) return ERROR; else for(i=0;i<L->length;i++) { printf("%4d",L->elem[i]); } printf("\n"); } //找指定元素的位置 int LocateElem(SqList L,ElemType e) { int i; if(L.length==0) return ERROR; for(i=0;i<L.length;i++) { if(L.elem[i]==e) break; } if(i>=L.length) return 0; } //两个线性表合并 void unionL(SqList *La,SqList Lb) { int La_len,Lb_len,i; ElemType e; La_len=LengthList(*La); Lb_len=LengthList(Lb); for(i=1;i<=Lb_len;i++) { GetElem(Lb,i,&e); if(!LocateElem(*La,e)) ListInsert(&La,++La_len,e); } } int main() { SqList L; SqList Lb; ElemType e; Status i; int j,k,select,longest; printf("************************\n"); printf("1、初始化顺序表 2、元素插入\n3、在某个位置插入 4、在某个位置删除\n5、清空顺序表 6、显示顺序表当前长度\n7、判断顺序表是否为空 8、打印顺序表\n9、销毁顺序表 10、找第几个元素\n0、退出\n"); printf("************************\n"); while(1) { printf("请输入选择:"); scanf("%d",&select); if(select==0) break; switch(select) { case 1://初始化 {i=InitList(&L); if(i==1) printf("分配成功!\n"); else if(i==0) printf("分配失败!"); }break; case 2://插入 { printf("想要插入多少个元素:"); scanf("%d",&longest); printf("请输入元素:\n"); for(k=1;k<=longest;k++) { scanf("%d",&j); i=ListInsert(&L,k,j); } if(i==1) printf("插入成功!\n"); else if(i==0) printf("插入失败"); }break; case 3://在某个位置插入 { printf("要插入的位置插入:"); scanf("%d",&j); printf("\n"); printf("要插入的元素:"); scanf("%d",&k); i=ListInsert(&L,j,k); if(i==1) printf("插入成功!\n"); else if(i==0) printf("插入失败"); }break; case 4://在某个位置删除 { int o; printf("要删除的位置:"); scanf("%d",&o); printf("\n"); i=ListDelete(&L,o,&k); if(i==1) printf("删除成功!\n"); else if(i==0) printf("删除失败\n"); printf("删除的元素是:%d\n",k); }break; case 5://清空顺序表 { i=ClearList(&L); if(i==1) printf("顺序表已清空!\n"); }break; case 6://显示顺序表当前长度 { printf("顺序表长当前度为:%d",L.length); printf("\n"); }break; case 7://判断顺序表是否为空 { i=ListEmpty(&L); if(i==1) printf("是空的!\n"); else if(i==0) printf("不是空的\n"); }break; case 8://打印顺序表 { i=ListTraverse(&L); if(i==0) printf("没有顺序表!\n"); }break; case 9://销毁顺序表 { i=DestroyList(&L); if(i==1) printf("已销毁!\n"); else if(i==0) printf("销毁失败\n"); }break; case 10: { printf("要获取第几个元素:"); scanf("%d",&j); i=GetElem(L,j,&e); if(i==1) printf("获取成功!\n"); else if(i==0) printf("获取失败\n"); printf("获取的元素是%d:\n",e); } } } system("pause"); return 0; }
这篇关于## 数结构顺序表基本操作C语言/c++实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain
- 2024-06-19EntBot.ai: AI Website Chatbot for Product Guides and Development Doc
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置