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

#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. HTML Dom操作数据表

    在QTP中有时候使用HTML Dom会带来事半功倍的效果,比如访问页面元素对象,对元素对象进行定位和获取属性值等,最近开始学HTML Dom的一些方法,属性,事件,修改等. 下面是通过HTML Dom ...

  2. Win7和Ubuntu下mysql 安装配置

    Windows下安装 下载对应版本的mysql安装包安装,如果安装目录为 C:\Program Files\MySQL\MySQL Server 5.6 增加环境变量 MYSQL_HOME=C:\Pr ...

  3. gerrit的merge conflict

    找了很多资料,最后参考http://blog.csdn.net/w_jewelry/article/details/8123639 解决的. 先把gerrit的那几个commit abandon掉. ...

  4. 重载 vs 重写

    http://www.cnblogs.com/lonelyDog/archive/2011/11/16/2251011.html

  5. Git操作基本命令

    分支开发原则: 如果本地dev分支有修改,则需要先切换到master分支,把本地分支的修改merge回master(git merge dev),然后在master上把合并后的内容push到maste ...

  6. 第一百节,JavaScript表达式中的运算符

    JavaScript表达式中的运算符 学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符 7.赋值运算符 8.其他运算符 9.运算符优先级 E ...

  7. visual studio2013 apache cordova基于web的跨平台应用

    目前在研究微软的visual studio 2013开发跨平台的android.ios.windows phone.当然是基于html javascript css的web跨平台app. 在visua ...

  8. hdu_5925_Coconuts(离散化+dfs)

    题目链接:hdu_5925_Coconuts 题意: 给你一张很大的图,和小于200个的障碍点,问这张图中的联通块有多少个 题解: 由于障碍点只有200个,所以肯定有很多的空白部分,我们将这些空白部分 ...

  9. 1.MyBaits无代理全套增删改

    一.mybatis使用的准备工作 1.找到mybatis所需要的jar文件: mybatis-3.2.3.jar mybatis-spring-1.2.1.jar 2.解压mybatis-3.2.3. ...

  10. java.lang.SecurityException:Invalid signature file digest forManifest main attributes

    今天在公司使用ant命令来从服务器中提取一个类的时候发现一个问题,每当我执行ant命令的时候就报如下异常: 想来想去猜测是Enovia提供的包没有做数字签名,但是如何解决这个问题呢?想不到解决方案只好 ...