博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构上机1顺序表
阅读量:6958 次
发布时间:2019-06-27

本文共 2872 字,大约阅读时间需要 9 分钟。

#include 
#include
#define OK 1#define OVERFLOW -1#define ERROR 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int ElemType;typedef int Status;typedef struct{ ElemType * elem; int length; int listsize;}sqlist;//初始化Status InitList_sq(sqlist * L){ L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType)); if(!L->elem) return OVERFLOW; L->length = 0; L->listsize = LIST_INIT_SIZE; return OK;}//插入Status ListInsert_Sq(sqlist * L, int i, ElemType e){ ElemType * newbase, * p, * q; if(i < 1 || i > L->length + 1) return ERROR; if(L->length >= L->listsize){ newbase = (ElemType *)realloc(L->elem, (L->listsize + LISTINCREMENT) * sizeof(ElemType)); if(!newbase) return OVERFLOW; L->elem = newbase; L->listsize = L->listsize + LISTINCREMENT; } q = &(L->elem[i-1]); for(p = &(L->elem[L->length-1]); p>=q; --p) *(p+1) = *p; *q = e; ++L->length; return OK;}//往表中输入数值void input_data(sqlist * L){ int i, n=5; ElemType e; printf("请输入顺序表的数据:\n"); for(i=1; i<=n; i++){ printf("请输入第%d个数据 : ", i); scanf("%d", &e) ; if(!ListInsert_Sq(L,i,e)){ printf("赋值失败!!"); break; } } printf("输入完毕!"); printf("表La的数据为:\n"); for(i = 1; i <= L->length; i++) printf("e[%d]=%d\n", i-1, L->elem[i-1]); printf("长度: %d\n\n", L->length);}////合并Status MergeList(sqlist * La,sqlist * Lb,sqlist * Lc){ int * pa, * pa_last, * pb, * pb_last, * pc; pa = La->elem; pb = Lb->elem; Lc->listsize = Lc->length = La->length + Lb->length; pc = Lc->elem = (ElemType *)malloc(Lc->listsize*sizeof(int)); if (!Lc->elem) return OVERFLOW; pa_last = La->elem + La->length - 1; pb_last = Lb->elem + Lb->length - 1; while(pa <= pa_last) *pc++ = *pa++; while(pb <= pb_last) *pc++ = *pb++; return OK;}//主函数int main(void){ sqlist La, Lb, Lc; int i; ElemType e; printf("/*-------------合并操作----------------*\n"); if(InitList_sq(&La)){ printf("La初始化成功\n"); printf("La长度: %d\n", La.length); printf("La容量: %d\n\n", La.listsize); } else printf("La初始化错误!"); printf("请输入La中数据\n"); input_data(&La); printf("输入完毕\n"); if(InitList_sq(&Lb)){ printf("Lb初始化成功\n"); printf("Lb长度: %d\n", La.length); printf("Lb容量: %d\n\n", La.listsize); } else printf("Lb初始化错误!"); printf("请输入Lb中数据\n"); input_data(&Lb); if(MergeList(&La, &Lb, &Lc)) printf("合并成功\n"); for(i = 1; i <= Lc.length; i++) printf("e[%d]=%d\n", i-1, Lc.elem[i-1]); printf("长度: %d\n", Lc.length); return 0;}

 

转载于:https://www.cnblogs.com/startnow/p/5052593.html

你可能感兴趣的文章
小程序从手动埋点到自动埋点
查看>>
vue-devtools的安装与使用
查看>>
iOS ARKit录制视频(AVAssetWriter & 有声音)
查看>>
### bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验...
查看>>
2019最新前端面试宝典
查看>>
Puppeteer爬取网页数据
查看>>
flutter 语言篇四
查看>>
月薪80K前端大佬笔记学习vue的心得,网友:两个字“完美”!
查看>>
「中高级前端面试」JavaScript手写代码无敌秘籍
查看>>
【通用技术】Git 完全自学手册
查看>>
unable to access 'https://github.com/DajuanM/DHAlgorithms.git/': The requested U
查看>>
iOS 之VLC使用RTSP流做监控或者直播视频
查看>>
restful+springmvc+mybatis+ webservice 分布式架构
查看>>
组件传值eventHub设置全局的使用
查看>>
提升hoisting
查看>>
记一次 “灵异事件” 及由此引发的思考
查看>>
基于vue的军训管理系统前端实现
查看>>
Spring和SpringBoot比较,解惑区别
查看>>
webpack 3 零基础入门教程 #4 - webpack 的配置文件 webpack.config.js
查看>>
小米网上看到的移动端h5页面自适应代码
查看>>