关于单链表的创建
hello,欢迎来到笼包叔叔的博客,本篇文章将要介绍线性表的链式表示和实现。
链表储存结构的特点是用一组任意的储存单元存储线性表的数据元素(这组储存单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素a(i),与其直接后继数据元素a(i+1)之间的逻辑关系,对数据元素a(i)来说,除了储存其本身的信息之外,还需储存一个指示其后继的信息(即直接后继的储存位置)。这两部分信息组成数据元素a(i)的储存映像,称为结点(node).它包括两个域:其中储存数据元素信息的域叫做数据域,储存后继位置的域成为指针域。
具体代码实现:
class node { public: //-----指针域------- node * next; //指向直接后继的指针 //-----数据域------- char content; //储存数据 };
将一个结点弄明白后,接下来就来探索如何使用结点构建成一个链表:
以上代码实现:
//构建单链表 void CreatList() { //构建第一个结点 node *head = new node; cout << "输入第1个结点的值:"; cin >> head->content; head->next = NULL; //构建第二个结点 head->next = new node; cout << "输入第2个结点的值:"; cin >> head->next->content; head->next->next = NULL; //构建第三个结点 head->next->next = new node; cout << "输入第3个结点的值:"; cin >> head->next->next->content; head->next->next->next = NULL; }
这样构建的话,结点个数少的话,还可以接受,如果有100个结点或者更多结点嘞?
//创建单链表 void CreatList(int len) { ElemType a; //a表示输入的值 //构建第一个结点的结点 node *head = new node; node *p = head; //p表示当前链表的最后一个结点 cout << "请输入第一个值" << endl; cin >> a; p->content = a; p->next = NULL; //构建第二个以及第二个以后的结点 for (int i = 1; i < len; i++) { p->next = new node; p = p->next; cout << "请输入第" << i + 1 << "个值" << endl; cin >> a; p->content = a; p->next = NULL; } }
就用上面的方法就可以啦!