实验三:用单链表实现基本的学生管理系统

实验目的:巩固线性表的数据的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。

实验内容:建立一个由n个学生成绩的线性表,n的大小由自己确定,每个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。

源程序:

# ifndef LinkList_H

# define LinkList_H

template

struct Node

{

DataType data;

Node*next;

};

template

class LinkList

{

public:

LinkList();

LinkList(DataType a[],int n);

~LinkList();

int Length();

DataType Get(int i);

int Locate(DataType x);

void Insert(int i,DataType x);

DataType Delete(int i);

void PrintList();

private:

Node*first;

};

# endif

# include"LinkList.h"

# include

using namespace std;

template

LinkList::LinkList()

{

first=new Node;

first->NULL;

}

template

LinkList::LinkList(DataType a[],int n)

{

Node*r,*s;

first=new Node;

r=first;

for(int i=0;i

{

s=new Node;

s->data=a[i];

r->next=s;

r=s;

}

r->next=NULL;

}

template

LinkList::~LinkList()

{

Node*q=NULL;

while(first!=NULL)

{

q=first;

first=first->next;

delete q;

}

}

template

int LinkList::Length()

{

Node *p;

p=first;

int count=0;

while(p!=NULL)

{

p=p->next;

count++;

}

return count;

}

template

DataType LinkList::Get(int i)

{

Node*p;

p=first->next;

int count=1;

while(p!=NULL&&count<1)

{

p=p->next;

count++;

}

if(p==NULL) throw"位置";

else return p->data;

}

template

int LinkList::Locate(DataType x)

{

Node*p;

p=first->next;

int count=1;

while(p!=NULL)

{

if(p->data==x) return count;

p=p->next;

count++;

}

return 0;

}

template

void LinkList::Insert(int i,DataType x)

{

Node*p=first,*s=NULL;

int count=0;

while(p!=NULL&&count

{

p=p->next;

count++;

}

if(p==NULL) throw"位置";

else

{

s=new Node;

s->data=x;

s->next=p->next;

p->next=s;

}

 

}

template

DataType LinkList::Delete(int i)

{

Node*p=first,*q=NULL;

DataType x;

int count=0;

while(p!=NULL&&count

{

p=p->next;

count++;

}

if(p==NULL||p->next==NULL)

throw"位置";

else

{

q=p->next;

x=q->data;

p->next=q->next;

delete q;

return x;

}

}

template

void LinkList::PrintList()

{

Node *p;

p=first->next;

while(p!=NULL)

{

cout<data<

p=p->next;

cout<

}

# include

using namespace std;

# include"LinkList.cpp"

int main()

{

int r[5];

for(int i=0;i<5;i++)

cin>>r[i];

LinkListL(r,5);

L.PrintList();

cout<

cout<

cout<

L.Insert(3,65);

L.Delete(2);

L.PrintList();

cout<

return 0;

}

程序结果:

实验三:用单链表实现基本的学生管理系统_第1张图片

你可能感兴趣的:(实验三:用单链表实现基本的学生管理系统)