单链表(c++)
#include "stdafx.h"
#include <iostream>
using namespace std;
const int MaxSize = 100;
class SeqList{ //定义一个SeqList类
private:
int data[MaxSize]; //存放数据元素的数组
int length; //线性表的长度
public:
SeqList(){length = 0;} //无参构造函数,建立一个空的顺序表
SeqList(int a[],int n); //创建一个长度为n的顺序表;
~SeqList(){} //析构函数为空
int Length(){return length;} //求线性表的长度
int Get(int i); //按位查找,在线性表中查找第i个元素
int locate(int x); //按值查找,在线性表中查找值为x的元素序号
void Insert(int i,int x); //插入操作,在线性表中第i个位置插入值为x的元素
int Delete(int i); //删除操作,删除线性表的第i个元素
void printList(); //遍历操作,按序号依次输出各元素
};
SeqList::SeqList(int a[],int n){
if(n>MaxSize) throw "参数非法";
for(int i = 0;i<n;i++)
data[i] = a[i];
length = n;
}
int SeqList::Get(int i){
if(i < 1 && i > length) throw "查找的范围非法";
else
return data[i-1];
}
int SeqList::locate(int x){
for(int i = 0;i < length;i++)
if(x == data[i])
return i+1;
return 0;
}
void SeqList::Insert(int i,int x){
if(length>=MaxSize) throw "上溢";
if(i<1||i>length+1) throw "位置";
for(int j = length;j>=i;j--)
data[j] = data[j-1];
data[i-1] = x;
length++;
for(int j = 0;j<length;j++){
cout<<data[j]<<" ";
}
}
int SeqList::Delete(int i){
if(length>=MaxSize) throw "下溢";
if(i<1||i>length) throw "位置";
int x =data[i-1];
for(int j = i;j<=length;j++)
data[j-1] = data[j];
length--;
return x;
}
void SeqList::printList(){
for (int i = 0; i < length; i++){
cout << data[i] <<" ";
}
cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cin>>n;
int * a = new int[n]; //动态创建数组a;
for(int i = 0;i < n;i++){ //输入元素
cin >> a[i];
}
SeqList example(a,n); //定义一个SeqList 的对象,并初始化
cout<<"数组的长度 ";
cout<<example.Length()<<endl;
cout<<"输入要查找的元素位置 ";
int i;
cin>>i;
cout<<example.Get(i)<<endl;
cout<<"在第j个元素插入数字x输入j,x ";
int j,x;
cin>>j>>x;
example.Insert(j,x);
cout<<endl;
cout<<"查找数值为y的元素下标输入y ";
int y;
cin>>y;
cout<<example.locate(y)<<endl;
cout<<"删除第m个元素输入m ";
int m;
cin>>m;
cout<<example.Delete(m)<<endl;
cout<<"打印SeqList对象 ";
example.printList();
delete a;
return 0;
}
单链表(c++)的更多相关文章
- 时间复杂度分别为 O(n)和 O(1)的删除单链表结点的方法
有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点. 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和 ...
- 单链表的C++实现(采用模板类)
采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作. 链表结构定义 定义单链表 ...
- Java实现单链表的各种操作
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...
- [LeetCode] Linked List Cycle II 单链表中的环之二
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...
- c++单链表基本功能
head_LinkNode.h /*单链表类的头文件*/#include<assert.h>#include"compare.h"typedef int status; ...
- 单链表、循环链表的JS实现
数据结构系列前言: 数据结构作为程序员的基本知识,需要我们每个人牢牢掌握.近期我也展开了对数据结构的二次学习,来弥补当年挖的坑...... 当时上课的时候也就是跟着听课,没有亲自实现任何一种数据结 ...
- C代码实现非循环单链表
C代码实现非循环单链表, 直接上代码. # include <stdio.h> # include <stdlib.h> # include <malloc.h> ...
- 分离的思想结合单链表实现级联组件:CascadeView
本文介绍自己最近做省市级联的类似的级联功能的实现思路,为了尽可能地做到职责分离跟表现与行为分离,这个功能拆分成了2个组件并用到了单链表来实现关键的级联逻辑,下一段有演示效果的gif图.虽然这是个很常见 ...
- 数据结构:单链表结构字符串(python版)添加了三个新功能
#!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...
- 数据结构:单链表结构字符串(python版)改进
此篇文章的replace实现了字符串类的多次匹配,但依然有些不足. 因为python字符串对象为不变对象,所以replace方法并不修改原先的字符串,而是返回修改后的字符串. 而此字符串对象时用单链表 ...
随机推荐
- 网页颜色RGB记法和16进制记法转化方法
A=>10,B=>11,C=>12,D=>13,E=>14,F=>15 看一个例子: 254,112,85 255/16 等于 15 余 14 那么它对应的应该是F ...
- windows下制作u盘启动的工具
推荐rufus,快捷方便
- 安装ORACLE后,改变计算机名称,导致OracleDBConsoleOrcl服务无法启动
错误信息: 启动oracledbconsoleorcl 服务提示 -- “--Windows不能再本地计算机启动oracledbconsoleorcl 有关更多信息,查阅系统事件日志,如果这是非Mi ...
- 像学历史课本一样学习Perl
第一次接触Perl,还是2008年10月份的时候,当时因为项目重构,需要进行大量的文本操作,于是便拾起了以“文本操作为己任”的Perl语言.当然,带我入门的还是那本赫赫有名的The Llama Bo ...
- .net关于httpModules的应用示例
这三个对象我们在开发Asp.net程序时经常会用到,似乎很熟悉,但有时 候又不太确定.本文通过一个简单的例子来直观的比较一下这三个对象的使用. HttpModule:Http模块,可以在页面处理前后. ...
- PLSQL_基础系列01_正则表达REGEXP_LIKE / SUBSTR / INSTR / REPLACE(案例)
2014-11-30 Created By BaoXinjian
- bug_ _fragment的1
========= 2 fragment小结 ???? ======== 1 fragment:java.lang.IllegalStateException: Can not perf ...
- Studio之版本管理工具Git (图文教程)
目前业界主流的版本管理工具主要是 svn/git.svn是1种集中式的代码管理工具,而git是1种散布式的代码管理工具,广受极客的爱好.而基于git的github更是全宇宙码农的提高逼格,深究技术的必 ...
- C++多态的实现及原理详细解析
C++多态的实现及原理详细解析 作者: 字体:[增加 减小] 类型:转载 C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型 ...
- AD按键-矩阵按键:
原理:利用数组分压+AD采集: 优点:一个IO口可以做成多个按键,节省IO口(矩阵键盘在>4时优点才能体现出来):可备用作为AD基准输入. 缺点:不能做成组合按键(或者电阻要精确选择):且离IO ...