文件功能:实现了动态建立一个学生信息的链表包括链表的
创建、插入、删除、和打印输出学生信息包括姓名和分数

#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 实例的更多相关文章

  1. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  2. Distributed1:Linked Server 添加和删除

    A linked server allows for access to distributed, heterogeneous queries against OLE DB data sources. ...

  3. 分享一个批量导出当前实例下的所有linkedserver脚本

    分享一个批量导出当前实例下的所有linkedserver脚本 很多时候,我们都需要导出实例下面的登录用户,job,linkedserver等等 导出job比较复杂,下午写了一个脚本把所有的linked ...

  4. Singleton、MultiThread、Lib——实现单实例无锁多线程安全API

        前阵子写静态lib导出单实例多线程安全API时,出现了CRITICAL_SECTION初始化太晚的问题,之后查看了错误的资料,引导向了错误的理解,以至于今天凌晨看到另一份代码,也不多想的以为s ...

  5. linux静态与动态库创建及使用实例

    一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o ...

  6. oracle11g asm standalone 单实例重建

    原文地址:oracle11g asm单实例重建has 作者:datapeng 最近到客户那里处理故障,客户说,他们修改了一下hostname,导到has出现了问题,当然,他们的数据库也就无法再启动,把 ...

  7. 从一个Bug说开去--解决问题的思路,Linked Server, Bulk Insert, DataTable 作为参数传递

    声名— 部分内容为杜撰,如有雷同,不胜荣幸! 版权所有,如要引用,请标明出处! 如果打赏,请自便! 1       背景介绍 最近一周在忙一个SQL Server 的Bug,一个简单的Bug,更新两张 ...

  8. Java基础语法实例(2)——实习第二天

    来到广州实习的第二天,广州好潮湿,这就是我的感觉,手表里面都开始产生了水雾,这就尴尬了...每天不断的雨.好吧,尽管我很喜欢这里的树,但是我以后应该也不会再来广州了,其实也说不准.想起了<谁动了 ...

  9. Ubuntu下比较通用的makefile实例

    本文转自http://blog.chinaunix.net/uid-20608849-id-360294.html  笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应 ...

随机推荐

  1. HDU 2177 取(2堆)石子游戏 (威佐夫博弈)

    题目思路:威佐夫博弈: 当当前局面[a,b]为奇异局时直接输出0 否则: 1.若a==b,输出(0 0): 2.将a,b不停减一,看能否得到奇异局,若有则输出: 3.由于 ak=q*k(q为黄金分割数 ...

  2. Android Game Examples

    Game2 using UnityEngine; using System.Collections; public class Game2_Player : MonoBehaviour { publi ...

  3. java 生成证书用于https

    在jdk的bin目录下运行: keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore " ...

  4. linux和windows双系统时间错误解决方法

    转自http://www.2cto.com/os/201204/126212.html windows时间会慢8小时,原因: 两个概念: UTC即Universal Time Coordinated, ...

  5. 重读The C programming Lanuage 笔记一:类型转换

    首先说自动类型转换: 当一个运算符的几个操作数类型不同时,就需要吧他们转换位某种共同的类型.一般来说,自动转换把“较低”的类型转换为”较高“的类型.运算结果为较高的类型 以下是不严格的规则: 首先,如 ...

  6. try{}catch{}finally{}的手记

    try{ System.out.println("执行try"); int = 6 / 0; return 1; }catch(Exception e){ System.out.p ...

  7. 【JS】学习18天Jquery Moblie的总结笔记。

    现在是2013年11月18日1:53分,从1号开始学习JqueryMoblie(简称JQM),这些天遇到的问题,和走的弯路还真不少. 先做个小总结,做了那么多天的一些收获: ●JQM是一个手机网站/轻 ...

  8. UIView 和 CALayer 的区别和联系

    UIView是在/System/Library/Frameworks/UIKit.framework定义,也就是处于Cocoa Touch层. CALyer是在/System/Library/Fram ...

  9. 单词缩写(abbr.cpp)每日一题

    题目描述:YXY 发现好多计算机中的单词都是缩写,如 GDB,它是全称 Gnu DeBug 的缩写.但是,有时缩写对应的全称并不固定,如缩写 LINUX,可以理解为:(1)LINus's UniX ( ...

  10. 博客word测试

    博客word测试 博客word测试 from __future__ import division, print_functionDOCLINES = (__doc__ or '').split(&q ...