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 笔者在写程序的时候会遇到这样的烦恼:一个项目中可能会有很多个应用程序,而新建一个应 ...
随机推荐
- Intent Flag实际项目 -- 超时跳转登录界面并清理前面所有activity
项目中涉及到登录超时跳转登录界面的逻辑,我以前的跳转flag为Intent.FLAG_ACTIVITY_CLEAR_TOP,但是点击返回按钮还是会回到上个界面.代码如下: ActivityUtils. ...
- centsOS下安装vsftp的配置
1. 添加用户组 # groupadd www 2. 修改配置 # vi /etc/vsftpd/vsftpd.conf 查找: #chroot_list_enable=YES #chroot_lis ...
- ios获取相册图片 压缩图片
从摄像头/相册获取图片 刚刚在上面的知识中提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用.在这里,我们需要过UIImagePickerController类来和用户交互. ...
- 更好列表页中一个航班.先unset删除数组中一个键值对,再追加,最后按键排序
<?php $arr = array( '0' => array('item' => array( 'aa' => 'aaa', 'bb' => 'bbb' )), '1 ...
- MySQL中整型数据的差别
bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. P.S. b ...
- 7.hibernat实现双向一对多(多对一)
1.创建如下项目结构 2.在项目的src下创建hibernate.cfg.xml主配置文件 <?xml version="1.0" encoding="UTF-8& ...
- linux下IPC通信
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系. # 有名管道 (named pipe) : 有名管道也 ...
- 理解php的opcode
Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL,举个例子,比如你写下了如下的PHP代码: <?php echo "Hello Wor ...
- js刷新页面不回到顶部
今天遇到刷新页面不回到顶部的需求 window.location.reload();方法已经解决了问题,但是ie8不支持,后来采用的是锚点这个方法 window.location = '/plan/g ...
- 字符串长度截取换行/n
/// <summary> /// 格式化字符串长度,超出部分显示省略号,区分汉字跟字母.汉字2个字节,字母数字一个字节 /// </summary> ...