c++ 单链表

学生类

#include<string>
#include<stdio.h>
#include<iostream>
using namespace std;
class Student;
ostream& operator<<(ostream& os,const Student& s);
istream& operator>>(istream& is,Student& s);
class Student
{
  public:
		 friend ostream& operator<<(ostream& os,const Student& s);
		 friend istream& operator>>(istream& is,Student& s);
  private:
		 string name;
		 float  Score;

};

ostream& operator<<(ostream& os,const Student& s)
{

	os<<s.name<<"的成绩为"<<s.Score<<endl;
	return os;
}

istream& operator>>(istream& is,Student& s)
{
    	cout<<"输入学生姓名和成绩"<<endl;
	is>>s.name>>s.Score;
	return is;
}
struct Node
{
	Student s;
	Node *next;
};

class LinkList
{
  private:
	 Node *head;
  public:
	  LinkList();
	  ~ LinkList();
	 void  CreateLinkList(int m);
	void  Insert(int i,Student s);
	void Delete(int m);
	  void DispList();
};

LinkList::LinkList()
{
    head = new Node;
	head -> next = NULL;
	
}

LinkList::~LinkList()
{
	Node *p = head->next;
	Node *q;
	while(p->next)
	{
	   q = p;
	   p = p->next;
	   delete q;


	}
	head = NULL;
}

void LinkList::CreateLinkList(int m)
{
	int i = 0;
	Node *p = head;

    Student s;
	for(i=0;i<m;i++)
	{
       
		Node *q = new Node;
		cin>>s;
		q->s = s;
		/*q->next = p->next;
		p->next = q;*/ //倒序
		p->next = q;
		p = q;//正序
		
	}
	p->next = NULL;
}


void  LinkList::DispList()
{
	Node *p;
	p = head->next;
	while(p != NULL)
	{
		cout<<p->s;
		p = p->next;
    }
}

void LinkList::Delete(int m)
{
	int i =0;
	Node *p = head;
	while(p && i!=m)
	{
		p = p->next;
		i++;
	}
	Node *q;
	q = p->next;
    p->next = q->next;
	
	delete q;
	

	
}

void LinkList::Insert(int i,Student s)
{
	 int m = 0;
	 Node *p = head;
	 while(p->next != NULL && m!= i)
	 {
		 p = p->next;
		 m++;
	 }
	 Node *q = new Node;
	 q->s = s;
	 q->next = p->next;
	 p->next = q;
	
}





int main()
{
	LinkList s;
	s.CreateLinkList(5);
	s.DispList();
	Student m;
	cin>>m;
	s.Insert(3,m);
	s.DispList();
	s.Delete(3);
	s.DispList();
	getchar();
	return 0;
}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值