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++ 代码中得到了广泛使用. 当你需要在代码中提供高层次的灵活性时, 该模式会非常实用. 识别方法: 工厂方法可通过构建方法来识别, 它会创建具体类的 ...
随机推荐
- [BZOJ1707] [Usaco2007 Nov] tanning分配防晒霜 (贪心)
Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...
- iOS9 HTTP 网络访问问题
今天升级Xcode 7.0 发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Security po ...
- Python字典的浅复制和深复制
copy:x(原字典),y字典, 替换y字典的某个键的值,x字典不受影响: 修改y字典的某个键的值,x字典也相应发生变化
- openssh/openssl升级到7.4和1.0.2j 源码方式
#!/bin/bashtar -xvf openssh-7.4p1.tar.gztar -xvf openssl-1.0.2j.tar.gz 升级 openssl 到1.0.2jcd openssl- ...
- Kendo UI ASP.Net MVC 实现多图片及时显示加上传(其中有借鉴别人的代码,自己又精简了一下,如有冒犯,请多原谅!)
View: <div class="demo-section k-content"> @(Html.Kendo().Upload() .Name("files ...
- 无后台应用 Stash Backend
Stash Backend 是Github上的开源项目 https://github.com/gaboratorium/stash,目的在于提供一套方便使用.方便部署的后台应用.特别适合为Web前端和 ...
- ubuntu中eclipse 不支持gbk编码问题解决办法
今天在ubuntu 下, 把Windows下工程导入Linux下Eclipse中,由于工程代码,是GBK编码,而Ubuntu默认不支持GBK编码,所以,要让Ubuntu支持GBK. 方法如下: 1.修 ...
- oracle 10g数据库下的 XDB组件的重新安装
emmmm,这是一个不做死就不会的过程!!! 今天在导出数据库时,遇到了报错信息,其实开发说这个报错没关系了,但作死如楼主,一定要把这个错给解决了,然后就有了下面的作死过程. 错误关键字是:packa ...
- 每个java初学者都应该搞懂的问题
对于这个系列里的问题,每个学JAVA的人都应该搞懂.当然,如果只是学JAVA玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列.内容均来自于CSDN的经典老贴. ...
- VMware Workstation 学习笔记
1. 什么是虚拟机:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.可以运行在一个完全隔离环境中的完整计算机系统. 2. 虚拟机的用途:测试软件.搭建某种特定需求的环境 ...