zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    linux apache + mysql +php no-yum
    linux apache + mysql +php
    1像素border
    vue-router配置
    错误Cannot find module 'stylus'
    高仿饿了么mock本地数据
    vue2.0高仿饿了么better-scroll
    npm 常用命令
    Gulp工具常用插件
    git总结
  • 原文地址:https://www.cnblogs.com/KennyRom/p/5884810.html
Copyright © 2011-2022 走看看