CPP链表示例
#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链表示例的更多相关文章
- 二次战CPP链表
Felling By Ruiy: Pre-learnning link list knowloages 熟悉 指针相关操作应用+结构体数据类型应用,且能简单融合使用,堆内存(内存泄露)->类似于 ...
- CPP 栈 示例
#include<iostream> #include<stdlib.h> using namespace std; typedef struct node { int dat ...
- C# 将链表存入二进制文件及读取二进制文件得到链表示例
// 将tasks保存到二进制文件中 public Boolean saveToFile(String file) { try { ) { // 没任务就不存 return false; } if ( ...
- [数据结构]链表相关的实现LinkList.cpp
目录 LinkList.cpp //链表相关操作的实现 LinkList.h LinkListManager.cpp //链表相关实现函数的调用 LinkListManager.h LinkList. ...
- JAVA 链表操作:单链表和双链表
主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...
- h2engine游戏服务器设计之聊天室示例
游戏服务器设计之聊天室示例 简介 h2engine引擎建群以后,有热心网友向我反馈,想尝试h2engine但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例.由于前一段时间工作实在忙碌 ...
- Java链表讲解
主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都 ...
- LeetCode 链表题 ( Java )
leetcode 237. 删除链表中的节点 链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 示例 : 输入: he ...
- C++工厂方法模式讲解和代码示例
在C++中使用模式 使用示例: 工厂方法模式在 C++ 代码中得到了广泛使用. 当你需要在代码中提供高层次的灵活性时, 该模式会非常实用. 识别方法: 工厂方法可通过构建方法来识别, 它会创建具体类的 ...
随机推荐
- js 数组去重常见的几种方式
1.利用标记 var arr = [2,6,2,6,4,3,16];// arr = [2,6,4,3,16] function norepeat(arr){ var res = []; for(va ...
- Fu+ 后台管理 (Thinkphp)
简要:小主从事PHP二年,期间一直做后台;为此向大家分享我制作一个后台(权限),希望能够跟各位PHP大神学习探索,如果有不对或者好的建议告知下:*~*! 1. 介绍 Fu+ 后台管理,是本人基于H+好 ...
- 在VCS仿真器中使用FSDB[转载]
来源:https://www.cnblogs.com/catannie/p/8099331.html FSDB(Fast Signal Database)是Verdi支持的文件格式,用于保存仿真产生的 ...
- [CF932E]Team Work & [BZOJ5093]图的价值
CF题面 题意:求\(\sum_{i=0}^{n}\binom{n}{i}i^k\) \(n\le10^9,k\le5000\) 模\(10^9+7\) BZOJ题面 题意:求\(n*2^{\frac ...
- IDEA 使用tomcat7-maven-plugin
使用了这个插件就不需要配置tomcat了,直接用maven去run就行 配置方法:pom里添加:(之所以用tomcat7是因为如果直接用依赖下载很难下载到tomcat8-maven-plugin,详情 ...
- MapReduce并行编程模型和框架
传统的串行处理方式 有四组文本数据: "the weather is good", "today is good", "good weather is ...
- c#缓存技术(Dictionary)
无论任何时候,只要传递的参数一致,返回的结果都应该是一致的.这样的函数我们才能够利用缓存.首先我们先定义一个函数,而这个函数将会是我们后面需要缓存的函数: 然后我们修改函数使之能够进行缓存: 这里我们 ...
- 关于安装了VMware tools后仍然不支持拖拽文件的问题
我在学校机房里面的redhat4上面安装了VMware tools之后能正常支持拖拽,但是我自己电脑上的却不支持,折腾了好久,网上找了很久也还是没有解决,不过发现了一些问题,总结如下:(当然我总结的这 ...
- CSS( Cascading Style Sheets )简书
(注:带*号的属性是CSS3新增属性)一.基本规则1.css通常存储在样式表(style)中,用于定义如何显示HTML元素:2.css主要由两个部分构成:选择器和一条或多条声明. 选择器通常是需要改变 ...
- 11 个简单的 Java 性能调优技巧
大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情.这 ...