单向链表创建与遍历

来源:互联网 发布:php新闻发布系统 编辑:程序博客网 时间:2024/05/29 17:24

        单向链表的节点基本由2个元素组成——数据字段和指针,前者存储数据,后者指向下一个元素的内存所在地址。在C++中动态创建单向链表,一般先定义一个类,类中包含数据字段和指针,该指针的类型与此类相同,作用就是指向下一个链表节点。设ptr为链表的读取游标,创建链表节点的C++算法是:

1.ptr指向链表头;

2.动态分配内存给新节点;

3.将ptr指针指向新节点内存,表示这是新的链表尾部;

4.新节点当前为链表的最后一个元素,所以将它的指针(Next)指向NULL;

5.将链表尾部的指针(Next)指向下一新元素。

prt->Next = NewNode;NewNode->Next = NULL;ptr = ptr->Next;

#include <iostream>using namespace std;class List{public:// 数据字段int iNum;int iScore;    char cName[12];//指针class List *Next;};typedef class List Node;typedef Node *SingleLinkedList;int main(){  SingleLinkedList pHead;    //链表头SingleLinkedList pNewNode; //新节点SingleLinkedList ptr;      //遍历游标//创建链表头cout<<"请输入5位学生的数据:"<<endl;pHead = new Node;   //创建链表头的指针if (!pHead){  cout << "内存分配失败!" << endl;return false;}cout << "请输入第1位学生的学号:";cin >> pHead->iNum;cout << "请输入第1位学生的姓名:";cin >> pHead->cName;cout << "请输入第1位学生的成绩:";cin >> pHead->iScore;ptr = pHead;                 //ptr指向链表头//创建其余4个节点for (int i = 0;i < 4;i++){  pNewNode = new Node;    //动态分配内存给新节点if(!pNewNode){  cout << "内存分配失败!" <<endl;return false;}cout << "请输入第" << i+2 << "位学生的学号:";cin >> pNewNode->iNum;cout << "请输入第" << i+2 << "位学生的姓名:";cin >> pNewNode->cName;cout << "请输入第" << i+2 << "位学生的成绩:";cin >> pNewNode->iScore;ptr->Next = pNewNode;  //将ptr指针指向新节点内存,表示这是新的链表尾部pNewNode->Next = NULL; //新节点当前为链表的最后一个元素,所以将它的指针(Next)指向NULLptr = ptr->Next;       //将链表尾部的指针(Next)指向下一新元素}//遍历输出    cout << "输出链表内容为:" << endl;    cout << " 学号\t姓名\t\t成绩" << endl;ptr = pHead;    //ptr指向链表头while(NULL != ptr){  cout << ptr->iNum << "\t" << ptr->cName << "\t" << ptr->iScore << endl;ptr = ptr->Next;    }//释放内存ptr = pHead;    //ptr指向链表头SingleLinkedList pTemp;while(NULL != ptr){ pTemp = ptr;ptr = ptr->Next;delete pTemp;pTemp = NULL;}return true;}





原创粉丝点击