版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define LIST_INIT_SIZE 100 /线性表存储空间的初始分配量#define LINSTINCREMENT 10 /线性表存储空间的分配增量typedef int Status;#include<stdio.h> #include<stdlib.h>typedef int ElemType;int menu_select() /菜单函数 char c; do s
2、ystem("cls"); /运行前清屏 printf("tt*线性表的查找、插入、删除*n"); /菜单选择 printf("tt| a. 建立一个线性表 | n"); printf("tt| b. 查找线性表中第i个元素 | n"); printf("tt| c. 在线性表中第i个位置插入一个元素 | n"); printf("tt| d. 删除在线性表中第i个位置的元素 | n"); printf("tt| e. 输出线性表中的所有元素 | n");
3、 printf("tt*n"); printf("ttt请输入您的选择功能的序号(a-e):"); c=getchar(); printf("n"); printf("n"); while(c<'a'|c>'e'); return(c-'a'); /返回选择 typedef structint *elem; /存储空间基址int length; /当前长度int listsize; /当前分配的存储容量(以sizeof(ElemType)为单位)SqLis
4、t;SqList L;Status InitList_Sq(SqList &L) /构造一个新的线性表L。 int i,n; L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!L.elem) return ERROR; / 存储分配失败 L.length = 0; / 空表长度为0 L.listsize = LIST_INIT_SIZE; / 初始存储容量 printf("请输入线性表的元素的个数:"); scanf("%d",&n); for(i=0;i&
5、lt;n;i+) /读入元素 scanf("%d",&L.elemi); L.length =n; return OK; Status abc(SqList &L) /输出线性表中所有元素int i; for(i=0;i<L.length;i+) /利用循环输出元素 printf("%d ",L.elemi); return OK; void LocateElem_Sq(SqList L, ElemType e) /查找线性表中的元素 int i=0; ElemType *p; p = L.elem; while (i <=
6、L.length)&&(*p!=e) /依次比较 *p+,i+; if (i <= L.length) printf("元素%d在表中第%d个位置!n",e,i+1); else printf("表中没有元素%d!n",e); Status ListInsert_Sq(SqList &L, int i, ElemType e) / 在线性表L中插入新的元素e ElemType *p; int *newbase; if (i < 1 | i > L.length+1) return ERROR; if (L.len
7、gth >= L.listsize) / 当前存储空间已满,增加容量 ElemType *newbase = (ElemType *)realloc(L.elem, (L.listsize+LINSTINCREMENT)*sizeof (ElemType); if (!newbase) return ERROR; / 存储分配失败 L.elem = newbase; / 新基址 L.listsize += LINSTINCREMENT; / 增加存储容量 ElemType *q = &(L.elemi-1); / q为插入位置 for (p = &(L.elemL.len
8、gth-1); p>=q; -p) *(p+1) = *p; / 插入位置及之后的元素右移 *q = e; / 插入e +L.length; / 表长增1 return OK; Status ListDelete_Sq(SqList &L, int i, ElemType &e) / 在顺序线性表L中删除第i个元素,并用e返回其值。 ElemType *p, *q; if (i<1 | i>L.length) return ERROR; / i值不合法 p = &(L.elemi-1); / p为被删除元素的位置 e = *p; / 被删除元素的值赋给
9、e q = L.elem+L.length-1; / 表尾元素的位置 for (+p; p<=q; +p) *(p-1) = *p; / 被删除元素之后的元素左移 -L.length; / 表长减1 return OK; void main() /主函数 int n=0,a,e,i; for(;) switch(menu_select() /菜单选择 case 0: printf("tt*建立一个线性表*n"); InitList_Sq(L); /建立新表 system("pause"); break; case 1: printf("t
10、t*查找一个元素*n"); printf("输入要查找的元素:n"); scanf("%d",&e); LocateElem_Sq( L,e); /查找元素 system("pause"); break; case 2: printf("tt*插入一个元素*n"); printf("输入要插入的元素:n"); scanf("%d",&e); printf("输入要插入的位置:n"); scanf("%d",&a
11、mp;i); ListInsert_Sq(L,i,e); /插入新元素 printf("ttt"); system("pause"); break; case 3: printf("tt*删除一个元素*n"); printf("输入要删除的元素:n"); scanf("%d",&e); printf("输入要删除元素的位置:n"); scanf("%d",&i); ListDelete_Sq(L, i, e); /删除元素 printf("ttt"); system("pause"); break; case 4: printf("tt*输出线性表*n"); abc(L); /输出线性表 system("pause"); break; case 5: printf(&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津苗圃立体绿化施工方案
- 水库清理泥浆方案
- 物业扫雪预算方案
- 宠物美容服务毛发损伤保障协议
- 数据驱动的智能农业种植技术应用方案
- 涉县轻钢龙骨别墅施工方案
- 消费品品牌授权经营协议
- 特种设备操作员安全操作及事故免责合同
- 酒店绿色能源采购协议
- 装修公司设计服务指南
- 广西基本医疗保险门诊特殊慢性病申报表
- 合唱与指挥课程教学大纲
- 四年级心理健康 12.我也能当家 课件(7张ppt)
- 性格色彩培训-ppt课件
- 10kV架空线路工程初步设计说明书模板
- 锅炉汽包水位控制系统设计[1]
- 政务礼仪培训课件(PPT66页)rar
- 定向培养对象面试表政审审查表样式
- 水土保持常用监测手段及方法
- 片石挡土墙砌筑施工方案及工艺方法
- 分析刑法中认识因素和意志因素的关系
评论
0/150
提交评论