#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct Student_data
{
int data;
struct Student_data *next;
}*PSD,SD; PSD creat_list();
int length_list(PSD );
bool sort_list(PSD );
bool insert_list(PSD );
bool traverse_list(PSD );
bool delete_list(PSD ); int main()
{
PSD pHead = NULL;
pHead = creat_list();
int len = length_list(pHead);
cout<<"链表长度为:\t"<<length_list(pHead)<<endl;
traverse_list(pHead);
insert_list(pHead);
sort_list(pHead);
traverse_list(pHead);
delete_list(pHead);
traverse_list(pHead);
return 0;
} PSD creat_list()
{
int len;
cout<<"请输入需要输入数据的个数:\t";
cin>>len;
PSD pHead = (PSD)malloc(sizeof(SD));
PSD pTail = pHead;
pTail->next = NULL;
if(pHead == NULL)
{
cout<<"错误 !";
exit(-1);
}
for(int i=0;i<len;i++)
{
PSD pNew = (PSD)malloc(sizeof(SD));
if(pNew == NULL)
{
cout<<"错误 !";
exit(-1);
}
cout<<"请输入第 "<<i+1<<"个数据:\t";
cin>>pNew->data;
pTail->next = pNew;
pNew->next = NULL;
pTail = pNew;
}
return pHead;
} int length_list(PSD pHead)
{
int i = 0;
PSD p=pHead;
while(p->next!=NULL)
{
i++;
p=p->next;
}
return i;
} bool sort_list(PSD pHead)
{
cout<<"由小到大排序..."<<endl;
PSD p=pHead->next,q;
int t;
for(p;p!=NULL;p=p->next)
for(q=p->next;q!=NULL;q=q->next)
if(p->data>q->data)
{
t = p->data;
p->data = q->data;
q->data = t;
}
traverse_list(pHead);
return true;
} bool insert_list(PSD pHead)
{
int n,x;
cout<<"请输入在第几个前插入:";
cin>>n;
cout<<"插入数据为:";
cin>>x;
int i=0;
PSD p=pHead;
while(i<n-1)
{
p=p->next;
i++;
}
if(p == NULL)
{
cout<<"插入失败!"<<endl;
exit(-1);
}
PSD pNew = (PSD)malloc(sizeof(SD));
if(pNew == NULL)
{
cout<<"创建失败!"<<endl;
exit(-1);
}
pNew->data = x;
PSD t=p->next;
p->next = pNew;
pNew->next = t;
return true;
} bool traverse_list(PSD pHead)
{
cout<<"输出:"<<endl;
PSD p=pHead->next;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
return true;
} bool delete_list(PSD pHead)
{
cout<<"删除第几个节点:\t";
int i=0,n;
cin>>n;
if(n>length_list(pHead))
{
cout<<"删除失败!"<<endl;
return false;
}
PSD p = pHead;
while(i<n-1)
{
p = p->next;
i++;
}
PSD j = p->next;
if(n==length_list(pHead))
p->next= NULL;
else
p->next = p->next->next;
delete(j);
j=NULL;
return true;
}

CPP链表示例的更多相关文章

  1. 二次战CPP链表

    Felling By Ruiy: Pre-learnning link list knowloages 熟悉 指针相关操作应用+结构体数据类型应用,且能简单融合使用,堆内存(内存泄露)->类似于 ...

  2. CPP 栈 示例

    #include<iostream> #include<stdlib.h> using namespace std; typedef struct node { int dat ...

  3. C# 将链表存入二进制文件及读取二进制文件得到链表示例

    // 将tasks保存到二进制文件中 public Boolean saveToFile(String file) { try { ) { // 没任务就不存 return false; } if ( ...

  4. [数据结构]链表相关的实现LinkList.cpp

    目录 LinkList.cpp //链表相关操作的实现 LinkList.h LinkListManager.cpp //链表相关实现函数的调用 LinkListManager.h LinkList. ...

  5. JAVA 链表操作:单链表和双链表

    主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...

  6. h2engine游戏服务器设计之聊天室示例

    游戏服务器设计之聊天室示例 简介 h2engine引擎建群以后,有热心网友向我反馈,想尝试h2engine但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例.由于前一段时间工作实在忙碌 ...

  7. Java链表讲解

    主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...

  8. LeetCode 链表题 ( Java )

    leetcode 237. 删除链表中的节点 链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 示例 : 输入: he ...

  9. C++工厂方法模式讲解和代码示例

    在C++中使用模式 使用示例: 工厂方法模式在 C++ 代码中得到了广泛使用. 当你需要在代码中提供高层次的灵活性时, 该模式会非常实用. 识别方法: 工厂方法可通过构建方法来识别, 它会创建具体类的 ...

随机推荐

  1. 空间主页播放任意FLV格式视频方法

      把文件上传到QQ网络硬盘 打开 硬盘 的 管理 选项 然后它会打开QQ邮箱的文件中转站 找到你要的视频文件 点击下载它 这里建议你使用搜狗浏览器打开网页 来到下载按钮点击下载,在弹出的对话框中选择 ...

  2. lodash源码分析之数组的差集

    外部世界那些破旧与贫困的样子,可以使我内心世界得到平衡. --卡尔维诺<烟云> 本文为读 lodash 源码的第十七篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodas ...

  3. Java遍历二叉树深度宽度

    节点数据结构 class TreeNode { TreeNode left = null; TreeNode right = null; } 最大深度,基本思路是:使用递归,分别求出左子树的深度.右子 ...

  4. Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  5. Cracking Wifi Wpa-Wpa2 in 5 second——Dumpper V.80.8 +JumpStart+WinPcap

    标题虽然说是5秒之内破解wpa-wpa2的wifi密码,不过其实这个是针对外国的那种路由器,我们大天朝的路由器越来越强悍了.有的路由器防pin,甚至于一些路由器没有pin,wps之类的.不过还是有一些 ...

  6. PHP开发程序员的学习路线

    PHP开发程序员的学习路线 兄弟连PHP培训,简单为大家梳理了每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标. 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟 ...

  7. webpack打包不识别es6语法的坑

    今天Vue项目npm run build 后webpack,报错uglifyjs,自己研究了一下,翻译过来,意思是不识别项目中写的高级语法,这里要把项目里es6语法转es5让浏览器识别, 也就是web ...

  8. 二分partition算法应用

    一个二分partition算法,将整个数组分解为小于某个数和大于某个数的两个部分,然后递归进行排序算法. 法一: int partition(vector<int>&arr, in ...

  9. day1-计算机基础

    第一单元  计算机组成原理 一.概念及过程 1.进行逻辑和数值高速计算的计算机器,有存储功能,能按照程序自动执行,且能够处理海量数据的现代化电子设备. 2.发展过程 数学运算:算盘,帕斯卡的齿轮装置, ...

  10. C#设置和获取系统环境变量

    C#设置和获取环境变量 1.前言 本来想拿学校机房的Android编辑器直接粘到自己电脑上用,发现它的eclipse是 32位的,而我的JDK是64位的,于是想到干脆装两个JDK,用C#做一个能够更改 ...