题目要求 在写代码的过程中出现了报错 每一步骤都实现具体化,按照题目要求将所有拼装一起在主函数中。
建立顺序表存储数据序列(10,20,30,40,50,60,70,80,90,100),要求:
(1)输出顺序表中的所有元素;
(2)输出顺序表中的最大值和最小值;
(3)键盘输入一个数x,如x在表中返回其在表中的位序,不在返回相应提示信息。
(4)删除顺序表中的第8个元素,并输出顺序表中的所有元素;
(5)在第5个元素后面插入新元素55,并输出顺序表中的所有元素;
(6)输出顺序表的长度。注意
是因为在函数中对参数做了引用:
C语言并不支持对函数参数的引用
解决办法:
1.将.c文件直接改成.cpp后缀即可
2.使用指针做函数的参数,达到引用的相同效果
在这里我用的是第一个方法,比较简单
所以我建立的是.cpp文件定义表结构
typedef struct { int data[10]; int length; }Sqlist;//定义Sqlist这个表结构
初始化顺序表
void initlist(Sqlist *&L)//初始化顺序表,定义结构体指针L { L=(Sqlist*)malloc(sizeof(Sqlist)); L->length=0;//初始化结点数量 }
显示顺序表内元素
void showlist(Sqlist *L) { int i; if(L->length==0) printf("该表为空"); else { printf("表内数据:n"); for(i=0;i<L->length;i++) printf("%dn",L->data[i]); printf("表内有%d个数据n",L->length); } }
插入元素操作
bool insertlist(Sqlist *&L,int i,int e) { int j; if(i>L->length+1||i<1) return false; i--; for(j=L->length;j>i;j--) L->data[j]=L->data[j-1]; L->data[i]=e; L->length++; return true; }
查找最大最小值操作
void Fmaxmin(Sqlist *L) { int max=L->data[0],min=L->data[0]; for(int i=0;i<L->length;i++) { if(L->data[i]>max) max=L->data[i]; if(L->data[i]<min) min=L->data[i]; } printf("表中最大值为%dn",max); printf("表中最小值为%dn",min); }
按元素查找序列号,返回int
int selectlist(Sqlist *L,int e) { int i=0; while(i<L->length&&L->data[i]!=e) i++; if(i>=L->length) return 0; else return i+1; }
删除表内数据操作
bool deletelist(Sqlist *&L,int i) { int j; if(i<1||i>L->length) return false; i--; for(j=i;j<L->length-1;j++) L->data[j]=L->data[j+1]; L->length--; printf("表内有%d个数据n",L->length); return true; }
最后完整代码
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #define LEN 10 typedef struct { int data[LEN]; int length; }Sqlist;//定义Sqlist这个表结构 void showlist(Sqlist *L)//显示表内数据 { int i; if(L->length==0)//表内为空 printf("该表为空"); else { printf("表内数据:n"); for(i=0;i<L->length;i++) printf("%dn",L->data[i]); printf("表内有%d个数据n",L->length); } } void initlist(Sqlist *&L)//初始化表结构,定义结构体指针L { L=(Sqlist*)malloc(sizeof(Sqlist)); L->length=0;//初始化节点数量 } bool insertlist(Sqlist *&L,int i,int e)//插入数据 { int j; if(i>L->length+1||i<1)//隔空插入或逻辑序号错误 return false; i--;//逻辑序号转换为物理序号 for(j=L->length;j>i;j--) L->data[j]=L->data[j-1]; L->data[i]=e; L->length++; return true; } void Fmaxmin(Sqlist *L)//查找最大最小值 { int max=L->data[0],min=L->data[0]; for(int i=0;i<L->length;i++) { if(L->data[i]>max) max=L->data[i]; if(L->data[i]<min) min=L->data[i]; } printf("表中最大值为%dn",max); printf("表中最小值为%dn",min); } int selectlist(Sqlist *L,int e)//按e(元素)查找下标返回下标(int) { int i=0; while(i<L->length&&L->data[i]!=e) i++; if(i>=L->length) return 0; else return i+1; } bool deletelist(Sqlist *&L,int i)//删除元素操作 { int j; if(i<1||i>L->length) return false; i--; for(j=i;j<L->length-1;j++) L->data[j]=L->data[j+1]; L->length--; printf("表内有%d个数据n",L->length); return true; } void menu() { printf("按1实现第一题n"); printf("按2实现第二题n"); printf("按3实现第三题n"); printf("按4实现第四题n"); printf("按5实现第五题n"); printf("按6实现第六题n"); } int main() { Sqlist *L; int a[LEN]={10,20,30,40,50,60,70,80,90,100}; int e,i=0,flag=0; initlist(L); for(i=0;i<10;i++) insertlist(L,i+1,a[i]); menu(); while(1){ scanf("%d",&flag); switch (flag) { case 1:showlist(L);break; case 2:Fmaxmin(L);break; case 3: printf("请输入你要查找的数据n"); scanf("%d",&e); if(selectlist(L,e)==0) printf("表中没有你要查找的数据n"); else printf("你要查找的数据是表中第%d个元素n",selectlist(L,e)); break; case 4: printf("您要删除第几个元素?n"); scanf("%d",&i); deletelist(L,i); showlist(L); break; case 5: printf("您要插入在哪里插入新元素?n"); scanf("%d",&i); printf("您要插入什么元素?n"); scanf("%d",&e); insertlist(L,i+1,e); showlist(L); break; case 6: printf("%d",L->length); break; } } return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算