实验二:单链表的实现

来源:互联网 发布:生死狙击矩阵图片 编辑:程序博客网 时间:2024/06/01 07:29

一、实验目的

建立一个由n个学生成绩的单链表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。

二、实验过程

#ifndef LinlList_H#define LinkList_Htemplatestruct Node{DataType data;    Node*next;};templateclass LinkList{public:LinkList();    LinkList(DataType a[],int n);    ~LinkList();    int Locate(DataType x);    void Insert(int i,DataType x);    DataType Delete(int i);    void PrintList();private:Node*first;};#endif#includeusing namespace std;#include "LinkList.h"templateLinkList::LinkList(){first=new Node;first->next=NULL;}templateLinkList::LinkList(DataType a[],int n){Node*r,*s;first=new Node;r=first;for(int i=0;i;s->data=a[i];r->next=s;r=s;}r->next=NULL;}templateLinkList::~LinkList(){Node*q=NULL;while(first!=NULL){q=first;first=first->next;delete q;}}templatevoid LinkList::Insert(int i,DataType x){Node*p=first,*s=NULL;int count=0;while(p!=NULL &&countnext;count++;}if(p==NULL)throw"位置";else{s=new Node;s->data=x;s->next=p->next;p->next=s;}}templateDataType LinkList::Delete(int i){Node*p=first,*q=NULL;DataType x;int count=0;while(p!=NULL &&countnext;count++;}if(p==NULL||p->next==NULL)throw"位置";else{q=p->next;x=q->data;p->next=q->next;delete q;return x;}}templateint LinkList::Locate(DataType x){Node*p=first->next;int count=1;while(p!=NULL){if(p->data==x)return count;p=p->next;count++;}return 0;}templatevoid LinkList::PrintList(){Node*p=first->next;while(p!=NULL){ cout<data<<"";p=p->next;}cout<using namespace std;#include "LinkList.cpp"   //引入类LinkList的成员函数定义void main(){int r[5]={100,99,88,77,66};LinkListL(r,5);cout<<"执行插入操作前学生成绩为:"<

三、实验心得

这是单链表实现对学生成绩的一些简单功能,单链表相对与顺序表来说,有点复杂,依靠工作指针实现数据的功能。我参考了实验书中的单链表实现的程序,

我需要再投入时间学习如何将程序高级化。