数据结构之线性表

一、线性表的顺序存储实现,利用数组实现线性表

typedef struct{int Data[MAXSIZE];int Last;
}List;List *MakeEmpty()
{List *PtrL;PtrL=(List*)malloc(sizeof(List));PtrL->Last=-1;return PtrL;
}
int FindKth( int K, List* PtrL )  //根据位序K,返回相应元素
{return PtrL->Data[K-1];
}
int Find(int X, List *PtrL )//在线性表L中查找X的第一次出现位置;
{int i=0;while (i<=PtrL->Last&&PtrL->Data[i]!=X){i++;}if (i>PtrL->Last){return -1;}else{return i;}
}
void Insert(int X, int i, List *PtrL)//:在位序i前插入一个新元素X;
{int j;if (PtrL->Last==MAXSIZE-1){printf("the list is full already");}if (i>=PtrL->Last+2){printf("the insert position is invalid");}for (j = PtrL->Last; j >=i-1; j--){PtrL->Data[j+1]=PtrL->Data[j];}PtrL->Data[i]=X;PtrL->Last++;
}
void Delete( int i, List *PtrL)//:删除指定位序i的元素;
{int j;if (i<1||i>PtrL->Last+1){printf("the number you asked is not existed");}for (j=i;j<=PtrL->Last;j++){PtrL->Data[j-1]=PtrL->Data[j];}PtrL->Last--;
}
int Length( List *PtrL )//:返回线性表L的长度n
{return PtrL->Last+1;
}
void showAll(List *PtrL)
{int i;for (i = 0; i <=PtrL->Last; i++){printf("%d ",PtrL->Data[i]);}
}void main1()
{int i;List *PtrL;int a,b;printf("1.create a empty list\n");printf("2.insert a number\n");printf("3.query a number first appear\n");printf("4.query a number by index\n");printf("5.delete a number\n");printf("6.show the length of the list\n");printf("7.showall\n");printf("8.exit\n");while (1){printf("please enter you order:");scanf("%d",&i);switch (i){case 1:PtrL=MakeEmpty();break;case 2:printf("please enter what and where do you want to inset :");scanf("%d%d",&a,&b);Insert(a,b,PtrL);break;case 3:printf("please enter what do you want to query:");scanf("%d",&a);Find(a,PtrL);break;case 4:printf("please enter what do you want to query:");scanf("%d",&a);FindKth(a,PtrL);break;case 5:printf("please enter which index do you want to delete:");scanf("%d",&a);Delete(a,PtrL);break;case 6:printf("the length is%d:",Length(PtrL));break;case 7:showAll(PtrL);break;case 8:exit(1);}}
}

顺序存储实现

线性表的链式存储实现,利用链表实现

typedef struct Node{int Data;struct Node *Next;
} List;int Length(List *PtrL)
{List *p=PtrL;int j=0;while (p){p=p->Next;j++;}return j;
}List *FindKth( int K, List *PtrL)
{List *p=PtrL;int i=1;while (p!=NULL&&i<K){p=p->Next;i++;}if (i==K){return p;}else{return NULL;}}List *Find( int X, List *PtrL )
{List *p=PtrL;while (p&&p->Data!=X){p=p->Next;}return p;
}List *Insert( int X, int i, List *PtrL )
{List *p,*s;if (i==1){s=(List*)malloc(sizeof(List));s->Data=X;s->Next=PtrL;return s;}p=FindKth(i-1,PtrL);if (p==NULL){printf("the insert is invalid");return PtrL;}else{s=(List*)malloc(sizeof(List));s->Data=X;s->Next=p->Next;p->Next=s;return PtrL;}}List *Delete( int i, List *PtrL )
{List *s,*p;if (i==1){s=PtrL;if (PtrL){PtrL=PtrL->Next;}else{return NULL;}free(s);return PtrL;}p=FindKth(i-1,PtrL);if (p==NULL){printf("the %d node is null",i-1);}else if (p->Next==NULL){printf("the %d node is null",i);}s=p->Next;p->Next=s->Next;free(s);return PtrL;
}void show(List *PtrL)
{List *P=PtrL;while (P){printf("%d ",P->Data);P=P->Next;}
}void main()
{List *PtrL=NULL;int x;int a,b;printf("1.insert a node\n");printf("2.delete a node\n");printf("3.query a node\n");printf("4.show all\n");printf("5,delete\n");while (1){printf("\nplase enter your order:");scanf("%d",&x);switch (x){case 1:printf("please enter what and where do you want to insert:");scanf("%d%d",&a,&b);PtrL=Insert(a,b,PtrL);break;case 2:printf("plEase enter which one do you want to delete:");scanf("%d",&a);PtrL=Delete(a,PtrL);break;case 3:printf("PLease enter which one do you want to query:");scanf("%d",&a);Find(a,PtrL);break;case 4:show(PtrL);break;case 5:exit(0);break;default:break;}}
}

链式存储实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

读写Excel2003文档

1.程序说明1.1编程语言&#xff1a;Java1.2 第三方库&#xff1a;Apache POIApache POI 官网&#xff1a;http://poi.apache.org/下载页面&#xff1a;http://poi.apache.org/download.html版本3.8下载地址&#xff1a;http://www.apache.org/dyn/closer.cgi/poi/release/bin/p…

行业|深度解析:医疗机器人商用要过几道坎

来源&#xff1a; 《瞭望》新闻周刊记者扈永顺“深层血管不好找&#xff0c;医生给患者扎针主要靠经验。现在用我们的超声导航穿刺辅助医疗机器人系统&#xff0c;可以从实时超声影像屏幕上看到血管的位置&#xff0c;并基于穿刺路径规划以及穿刺导航系统&#xff0c;辅助医护人…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨游戏玩法分析 I【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

数据结构之堆栈与队列

堆栈与队列是两种重要的基础数据结构&#xff0c;一个是先入后出&#xff0c;一个是先入先出&#xff0c;有着广泛的应用&#xff0c;本文分别使用数组与链表实现堆栈与队列 顺序存储方式实现堆栈 #define MaxSize 20 #define ERROR -1 typedef struct {int Data[MaxSize];in…

Oracle修改表空间大小

使用Oracle10g建立数据库后&#xff0c;向数据库中导入了部分数据&#xff0c;第二天继续向数据库中导入数据表时发生错误&#xff1a; 查了很多资料发现原来是Oracle表空间限制&#xff0c;导致无法继续导入数据的原因。如果在建立数据库时没有设置&#xff0c; Oracle 默认的…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨员工薪水中位数【难度困难】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

2018中国民营企业500强榜单

来源&#xff1a;央视财经、先进制造业由全国工商联和辽宁省人民政府共同主办的2018中国民营企业500强峰会29日在沈阳召开&#xff0c;会上发布了2018中国民营企业500强榜单和《2018中国民营企业500强调研分析报告》。华为投资控股有限公司、苏宁控股集团有限公司、正威国际集团…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 5丨至少有5名直接下属的经理【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

全球数字经济十大发展趋势

来源&#xff1a;CIE智库摘要&#xff1a;当前&#xff0c;信息网络技术加速创新&#xff0c;以数字化的知识和信息作为关键生产要素的数字经济蓬勃发展&#xff0c;新技术、新业态、新模式层出不穷&#xff0c;成为“后国际金融危机”时代全球经济复苏的新引擎。当前&#xff…

数据结构之二叉树的遍历

二叉树的遍历分为前序遍历&#xff0c;中序遍历&#xff0c;后序遍历&#xff0c;层序遍历&#xff0c;在本文中&#xff0c;前三种由递归实现&#xff0c;层序遍历由队列实现。 #include "stdio.h" #include "stdlib.h" #include "windows.h" …

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 5丨员工奖金【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

从换脸到换姿势,AI 在图像处理的道路上越走越魔幻

来源&#xff1a;专知加州大学伯克利分校的研究人员&#xff0c;近日在著名预印本网站 arXive 上&#xff0c;发布了最新的图像迁移成果&#xff1a;人体姿势和舞蹈动作迁移。旨在把专业舞蹈演员的动作迁移到不会跳舞的人身上&#xff0c;算法输出流畅&#xff0c;还原度极高。…

sql中的并、交、差

⑸ 集合运算连接 有时候&#xff0c;用户希望在SQL查询中利用关系代数中的集合运算&#xff08;并、交、差&#xff09;来组合关系&#xff0c;SQL为此提供了相应的运算符&#xff1a;UNION、INTERSECT、EXCEPT(oracle的minus?)&#xff0c;分别对应于集合运算的∪、∩、-。它…

C语言实现大数据除法

本题要求计算A/B&#xff0c;其中A是不超过1000位的正整数&#xff0c;B是1位正整数。你需要输出商数Q和余数R&#xff0c;使得A B * Q R成立。 输入格式&#xff1a; 输入在1行中依次给出A和B&#xff0c;中间以1空格分隔。 输出格式&#xff1a; 在1行中依次输出Q和R&a…

每日一道题,划水有意义,看我不卷死你们(评论送书)

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家 & 总榜前十&#x1f3c6;、HDZ核心组成员。欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 &#x1f…

计算机视觉已超越人类眼睛?腾讯优图与《科学》杂志全面解读

来源: 腾讯研究院摘要&#xff1a;视觉是人类认知世界的重要组成部分&#xff0c;而计算机视觉作为人工智能的核心技术之一&#xff0c;近几年的发展现状如何&#xff1f;视觉是人类认知世界的重要组成部分&#xff0c;而计算机视觉作为人工智能的核心技术之一&#xff0c;近几…

ScrollView与TableView实现选择效果

在cocos2dx中&#xff0c;ScrollView与TableView都可以实现选择效果&#xff0c;其中ScrollView较为原始&#xff0c;TableView的格子大小可以不与winSize一样大。 ScrollView实现 #include "T25ScrollView.h" #include "AppMacros.h"CCScene* T25Scroll…

科学家发现新的人类脑细胞,或可解答一个难题

来源&#xff1a;中国生物技术网关于人类大脑最令人感兴趣的问题之一&#xff0c;也是神经科学家们最难回答的问题之一&#xff0c;就是到底是什么让我们的大脑与其他动物的大脑区别开来。Allen脑科学研究所的研究员Ed Lein博士说&#xff1a;“我们并不清楚是什么让人类大脑变…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 6丨统计各专业学生人数【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

五问智能教育未来发展:重点解决什么问题?

来源&#xff1a;人民日报日前&#xff0c;首届中国智能教育大会在北京举行&#xff0c;教育部有关负责人、人工智能专家和教育专家、一些地方政府及教育行政部门负责人、大中小学校长、教师和企业家等近1000人参加。与会代表认为&#xff0c;智能教育将会越来越多地影响每一个…