Linked List 实例
文件功能:实现了动态建立一个学生信息的链表包括链表的
创建、插入、删除、和打印输出学生信息包括姓名和分数
- #include<iostream>
- #include<string>
- using namespace std;
- //单个节点
- struct Node
- {
- //Data
- string name;
- double score;
- //Pointer
- Node* next;
- };
- typedef Node ListNode;
- //创建链表
- ListNode* CreateList()
- {
- ListNode* head=new ListNode;//指向头结点指针
- ListNode*p, *pre;
- head->next = NULL;
- pre = head;
- cout << "Input name of the student:" << endl;
- string name;
- cin >> name;
- cout << "Input his score:" << endl;
- double score;
- cin >> score;
- while (name!="q")
- {
- p = new ListNode;
- p->name=name;
- p->score=score;
- pre->next = p;
- pre = p;
- cout << "Input name of the student(q to quit input)" << endl;
- cin >> name;
- if (name != "q")
- {
- cout << "Input his score:" << endl;
- cin >> score;
- }
- }
- pre->next = NULL;
- return head;
- }
- //输出链表
- void PrintList(ListNode *h)
- {
- ListNode*p;
- p = h->next;
- while (p)
- {
- cout << p->name << " " << p->score << endl;
- p = p->next;
- }
- }
- //在位置i插入链表
- void InsertList(ListNode *L, int i, string name, double score)
- {
- ListNode *p, *q;
- p = L;
- int j = 0;
- while (p&&j < i - 1)
- {
- p = p->next;
- j++;
- }
- if (!p)return;
- q = new ListNode;
- q->name = name;
- q->score = score;
- q->next = p->next;
- p->next = q;
- }
- //删除节点
- void Delete(ListNode*L, int i)
- {
- ListNode*p, *q;
- p = L;
- int j = 0;
- while (p&&j < i - 1)
- {
- p = p->next;
- j++;
- }
- if (!p)return;
- q = p->next;
- p->next = q->next;
- delete q;
- }
- //按位搜索节点
- void Search(ListNode*L, int i)
- {
- ListNode*p=L;
- int j = 0;
- while (p&&j < i - 1)
- {
- p = p->next;
- j++;
- }
- if (!p)return;
- cout << "第" << i << "个学生" << ":";
- cout << p->next->name << " " << p->next->score << endl;
- }
- //按名字搜索节点
- void Searchz(ListNode*L, string name)
- {
- ListNode*p;
- p = L;
- int j = 0;
- while (p && (p->next->name) != name)
- {
- p = p->next;
- j++;
- }
- if (!p)
- {
- cout << "Not Found" << endl;
- return;
- }
- else
- {
- cout << p->next->name << " " << p->next->score << endl;
- }
- }
- //主函数
- int main()
- {
- ListNode*head;
- head = CreateList();
- string name1, name2;
- double score;
- int j, j1, j2;
- cout << "1--输出链表" << endl;
- cout << "2--添加元素" << endl;
- cout << "3--删除元素" << endl;
- cout << "4--按位输出元素" << endl;
- cout << "5--按名字输出元素" << endl;
- cout << "0--退出" << endl;
- int i;
- cin >> i;
- while (i)
- {
- switch (i)
- {
- case 1:
- PrintList(head);
- break;
- case 2:
- cout << "请输入学生位置:";
- cin >> j;
- cout << "名字:";
- cin >> name1;
- cout << "成绩:";
- cin >> score;
- InsertList(head, i, name1, score);
- PrintList(head);
- break;
- case 3:
- cout << "输入要删除学生位置:";
- cin >> j1;
- Delete(head, j1);
- PrintList(head);
- break;
- case 4:
- cout << "请输入学生位置:";
- cin >> j2;
- Search(head, j2);
- break;
- case 5:
- cout << "请输入学生姓名:";
- cin >> name2;
- Searchz(head, name2);
- break;
- default: cout << "ERROR! Try again!" << endl;
- }
- cin >> i;
- }
- delete head;
- return 0;
- }
Linked List 实例的更多相关文章
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- Distributed1:Linked Server 添加和删除
A linked server allows for access to distributed, heterogeneous queries against OLE DB data sources. ...
- 分享一个批量导出当前实例下的所有linkedserver脚本
分享一个批量导出当前实例下的所有linkedserver脚本 很多时候,我们都需要导出实例下面的登录用户,job,linkedserver等等 导出job比较复杂,下午写了一个脚本把所有的linked ...
- Singleton、MultiThread、Lib——实现单实例无锁多线程安全API
前阵子写静态lib导出单实例多线程安全API时,出现了CRITICAL_SECTION初始化太晚的问题,之后查看了错误的资料,引导向了错误的理解,以至于今天凌晨看到另一份代码,也不多想的以为s ...
- linux静态与动态库创建及使用实例
一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o ...
- oracle11g asm standalone 单实例重建
原文地址:oracle11g asm单实例重建has 作者:datapeng 最近到客户那里处理故障,客户说,他们修改了一下hostname,导到has出现了问题,当然,他们的数据库也就无法再启动,把 ...
- 从一个Bug说开去--解决问题的思路,Linked Server, Bulk Insert, DataTable 作为参数传递
声名— 部分内容为杜撰,如有雷同,不胜荣幸! 版权所有,如要引用,请标明出处! 如果打赏,请自便! 1 背景介绍 最近一周在忙一个SQL Server 的Bug,一个简单的Bug,更新两张 ...
- Java基础语法实例(2)——实习第二天
来到广州实习的第二天,广州好潮湿,这就是我的感觉,手表里面都开始产生了水雾,这就尴尬了...每天不断的雨.好吧,尽管我很喜欢这里的树,但是我以后应该也不会再来广州了,其实也说不准.想起了<谁动了 ...
- Ubuntu下比较通用的makefile实例
本文转自http://blog.chinaunix.net/uid-20608849-id-360294.html 笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应 ...
随机推荐
- android的签名
安装好了android studio,默认是使用期限为一年的签名,并且不可以发布到正式版的apk里. 在使用第三方模块或者服务的时候,经常要求提供签名及其sha1或者MD5信息. 事实上这个签名和及其 ...
- 从NPM到CNPM
从NPM到CNPM 原文 http://www.cnblogs.com/hufeng/p/5166479.html 主题 npm 引用NPM网站上的一句话:npm loves you ! NPM ...
- SSLPinning 延伸
AFSecurityPolicy用于验证HTTPS请求的证书,先来看看HTTPS的原理和证书相关的几个问题. HTTPS HTTPS连接建立过程大致是,客户端和服务端建立一个连接,服务端返回一个证书, ...
- php登录利用$token验证
<?php $module = $_GET['module']; $action = $_GET['action']; $token = md5sum($module.date('Y-m-d', ...
- 通过HttpModule管道,帮助api对接开发
我们公司的技术以.net为主,最近公司的项目需要和其它以java为主的公司搞对接. .net提供webapi由java请求调用. 目前出现java说调用了,但是.net一直接收不到数据.两方开发人 ...
- C# Monads的实现(二)
再谈continuation monad 上一篇中我们已经介绍了continuation monad,但是这个monad与Identity,Maybe,IEnumerable monads稍微难于理解 ...
- PerformSelector 和 NSInvocation
- Qt_DX
#ifndef MY_FRAME__HH__ #define MY_FRAME__HH__ #include <QtGui/QWidget> struct IDirect3D9; stru ...
- MySQL Logs
摘要 一.MySQL日志 1.1 查询日志 1.2 慢查询日志 1.3 错误日志 1.4 二进制日志 一. MySQL日志 MySQL服务器上一共有六种日志:错误日志,查询日志,慢查询日志,二进制日志 ...
- Windows系统新建gitignore文件出现“必须键入文件名”错误的解决办法
今天打算把本地的项目用git推送到github上去,但是有的信息我又不想把它加入到版本控制系统中去,例如.classpath文件和.class文件等等,这个时候我就想到了使用.gitignore文件把 ...