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 笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应 ...
随机推荐
- Users is not mapped(Hibernate实体类采用注解)
今天做简单的登陆验证web应用时,用HQL语句查询数据表时 总是出现Users is not mapped [from Users u where u.username=? and u.passwor ...
- python获取
def anc():pass print anc.__name__ def timeit(func): def run(*argv): print "this function name i ...
- A. Alyona and Numbers(CF ROUND 358 DIV2)
A. Alyona and Numbers time limit per test 1 second memory limit per test 256 megabytes input standar ...
- java 垃圾回收总结(可达性分析 引用分类
java 垃圾回收总结(1) 以前看过很多次关于垃圾回收相关的文章,都只是看过就忘记了,没有好好的整理一下,发现写文章可以强化自己的记忆. java与C,c++有很大的不同就是java语言开发者不 ...
- java泛型操作复习,以及讲解在android中使用的场景
android使用泛型的地方很多,比如集成自BaseAdapter实现封装的Adapter,对常用操作进行封装,但是需要对传进来的数据进行处理,此时就使用到泛型,示例如下: public abstra ...
- MySQL5.5.28启动错误 The server quit without updating PID file
今天重新安装了一次 MySQL5.5.28 ,但启动的时候老是报错 Starting MySQL.. ERROR! The server quit without updating PID file ...
- django+nginx+uwsgi 部署配置
django官方文档在这 https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/uwsgi/ 第一步:先收集静态文件 之前要先设置 S ...
- iOS开发上架之itunes connect里app信息的编辑
sku用于我们在后台识别自己的app,所以随你怎么填写
- html 超链接(a)详细讲解
a:link : http://www.cnblogs.com/yangfeng/archive/2009/07/25/1530962.html 超级链接 超级链接是网站中使用比较频繁的HTML元素, ...
- w3c School
w3c School : http://www.w3school.com.cn/h.asp