c++链表演示
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;
#define MAXLEN 100
typedef struct
{
char key[];
char name[];
int age;
}DATA;
typedef struct
{
DATA ListData[MAXLEN + ];
int ListLen;
}SLType;
void SLInit(SLType*SL)//初始化顺序表
{
SL->ListLen = ;
}
int SLLength(SLType*SL)//返回顺序表的元素数量
{
return(SL->ListLen);
}
int SLInsert(SLType*SL, int n, DATA data)//只在表间插入
{
int i;
if (SL->ListLen >= MAXLEN)
{
cout << "顺序表已满,不能插入结点!\n";
return ;
}
if (n< || n>SL->ListLen - )//插入结点序号不正确
{
cout<<"插入结点的序号错误";
return ;
}
for (i = SL->ListLen; i >= n; i--)
{
SL->ListData[i + ] = SL->ListData[i];
}
SL->ListData[n] = data;
SL->ListLen++;
return ;//成功插入返回1
}
int SLAdd(SLType*SL, DATA data)
{
if (SL->ListLen >= MAXLEN)
{
cout << "顺序已满,不能再添加结点了" << endl;
return ;
}
SL->ListData[++SL->ListLen] = data;
return ;
}
int SLDelete(SLType* SL, int n)
{
int i;
if (n< || n>SL->ListLen + )
{
cout << "删除结点序号错误,不能删除";
return ;
}
for (i = n; i < SL->ListLen; i++)
{
SL->ListData[i] = SL->ListData[i + ];
}
SL->ListLen--;
return ;
}
DATA*SLFindByNum(SLType*SL, int n)
{
if (n< || n>SL->ListLen + )
{
cout << "结点序号错误,不能返回结点";
return NULL;
}
return &(SL->ListData[n]);
}
int SLFindByCont(SLType*SL, char *key)
{
int i;
for (i = ; i < SL->ListLen; i++)
{
if (strcmp(SL->ListData[i].key, key) == )
{
return i;//返回结点序号
}
}
return ;
}
int SLALL(SLType*SL)
{
int i;
for (i = ; i <=SL->ListLen; i++)
{
cout << SL->ListData[i].key << SL->ListData[i].name << SL->ListData[i].age << endl;
}
return ;
}
int main()
{
int i;
SLType SL;
DATA data;
DATA *pdata;
char key[];
cout << "顺序操作表演示" << endl;
SLInit(&SL);
cout << "链表初始化完成" << endl;
do
{
cout << "输入添加的结点(学号 姓名 年龄):" << endl;
fflush(stdin);//清空输入缓冲区
cin>>data.key>>data.name>>data.age;
if (data.age)//若年龄不为0
{
if (!SLAdd(&SL, data))
{
break;
}
}
else
{
break;
}
} while ();
cout << "顺序表中的结点顺序为:" << endl;
SLALL(&SL);//显示所有的结点数据
fflush(stdin);
cout << "要取出结点的序号:" << endl;
cin >> i;
pdata = SLFindByNum(&SL, i);
if (pdata)
{
cout << i << pdata->key << pdata->name << pdata->age << endl;
}
fflush(stdin);
cout << "要查找结点的关键字" << endl;
cin >> key;
i = SLFindByCont(&SL, key);
pdata = SLFindByNum(&SL, i);
if (pdata)
{
cout << i << pdata->key << pdata->name << pdata->age << endl;
}
getch();
return ;
}
c++链表演示的更多相关文章
- 链表插入和删除,判断链表是否为空,求链表长度算法的,链表排序算法演示——C语言描述
关于数据结构等的学习,以及学习算法的感想感悟,听了郝斌老师的数据结构课程,其中他也提到了学习数据结构的或者算法的一些个人见解,我觉的很好,对我的帮助也是很大,算法本就是令人头疼的问题,因为自己并没有学 ...
- 链表创建和链表遍历算法的演示_C语言
今天搞了一个多小时,头是疼的,应该是没休息好吧,学习了数据结构这一节,感觉收益良多,下面贴上代码和心得: /*24_链表创建和链表遍历算法的演示*/ # include <stdio.h> ...
- php实现找两个链表的第一个公共结点(实例演示)
php实现找两个链表的第一个公共结点(实例演示) 一.总结 因为是链表,第一个节点公共之后,后面所有的节点都公共了 画个图实例演示一下,会超清晰且简单 二.php实现找两个链表的第一个公共结点 题目描 ...
- 静态链表过程演示及代码实现(A - B) U (B - A)
静态链表说明 使用数组来实现链式存储结构,目的是方便在不设指针类型的高级程序设计语言中使用链式结构 c语言定义数据结构 #define MAX_SIZE 1000 // 所有的类型都统一定义为Elem ...
- 28_链表插入和删除算法的演示.swf
#include<stdio.h> #include<malloc.h> #include <stdio.h> #include <stdlib.h> ...
- C(C++)/ 数据结构 链表
内容概括: 一.链表简介及创建列表 二.添加节点 三.链表排序 代码编译平台: CentOS 6.4 64b 一.链表简介及创建列表: 传统数组缺点: 传统数组长度需要事先设定,不能改变,内存由系统自 ...
- 分离的思想结合单链表实现级联组件:CascadeView
本文介绍自己最近做省市级联的类似的级联功能的实现思路,为了尽可能地做到职责分离跟表现与行为分离,这个功能拆分成了2个组件并用到了单链表来实现关键的级联逻辑,下一段有演示效果的gif图.虽然这是个很常见 ...
- c++实现简单的链表
注:我是一个编程菜鸟,哪个大神看出来缺陷提点一下,感激不尽. 链表由一个个的节点串联而成,同一由first头指针管理,属于线性表中相比于数组,添加删除方便,但访问又有点慢的数据结构. 第一步:节点 N ...
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...
随机推荐
- ES5 Object.assign 低版本浏览器内核兼容问题
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { ...
- Django 学习之Django Rest Framework_序列化器_Serializer
作用: 1.序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串. 2.反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型. 3 ...
- Python中from scipy.misc import imread报错的原因?
from scipy.misc import imread 报错 查询后其原因是from scipy.misc import imread,imwrite 等方法已经被弃用,Python已经将imre ...
- python如何画三维图像?
python三维图像输出的代码如下所示:#画3D函数图像输出from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmimport ...
- #写一个登陆的程序 ( 1.最多登录失败3次 2.登陆成功,提示欢迎XX登录,今天的日期是XXX,程序结束 3.要检验输入是否为空,账户和密码不能为空 4.账户不区分大小写)
import datetime import MySQLdb today=datetime.datetime.today() username=str(input('请输入账户:')) passwd1 ...
- Linux命令:history命令历史的管理及用法
bash可以保存的过去曾经执行过的命令.当某个用户登录到shell中,会读取该用户家目录中的~/.bash_history文件,并将历史命令列表保存到内存中.当用户退出当前shell时,会将内存中的历 ...
- Java-Study
java中static用法: static :静态的,用于修饰成员(成员变量,成员方法): 1. 被static所修饰的变量或者方法会储存在数据共享区: 2. 被static所修饰的成员变量只有一份: ...
- C++ 一篇搞懂继承的常见特性
微信公众号:「小林coding」 用简洁的方式,分享编程小知识. 继承和派生 01 继承和派生的概念 继承: 在定义一个新的类 B 时,如果该类与某个已有的类 A 相似(指的是 B 拥有 A 的全部特 ...
- 嵊州普及Day4T1
题意:从n个数中选出k个数,使他们任意两数之差都等于m. 思路:任意差值都等于m,不就等价于k个数模m余数相同吗? 然后桶排储蓄一下各数余数即可. 见代码: #include<iostream& ...
- Java注解浅谈
注解定义(来自百度百科):指示编译器如何对待您的自定义 Annotation,预设上编译器会将Annotation资讯留在class档案中,但不被虚拟机器读取,而仅用于编译器或工具程式运行时提供资讯. ...