下面介绍一下单链表,给出了链表元素的插入,删除,显示函数,并且给出明确注释。
#include<iostream>#include<Windows.h>using namespace std;struct Node{ int data;//数据域 Node *next;//指针域};void PushElement(Node *RootNode,int data);void PopElement(Node *RootNode);void DisplyElement(Node *RootNode);int main(){ Node *RootNode=new Node;//创建根节点 RootNode->next = NULL; //根节点的指针域初始值为NULL RootNode->data = 0;//根节点数据域为链表大小 PushElement(RootNode, 1);//向链表中压入元素 PushElement(RootNode, 2); PushElement(RootNode, 3); PushElement(RootNode, 4); PushElement(RootNode, 5); PushElement(RootNode, 6); PushElement(RootNode, 7); DisplyElement(RootNode);//显示整个链表 system("pause"); return 0;}void PushElement(Node *RootNode, int data){ Node *NewNode = new Node;//创建新的节点 if (RootNode == NULL)//链表为空时 { RootNode->next = NewNode; NewNode->data = data; } else//链表不为空 { NewNode->next = RootNode->next; RootNode->next = NewNode; NewNode->data = data; } RootNode->data++;}void DisplyElement(Node *RootNode){ Node *p = RootNode->next; cout << "共" << RootNode->data << "个元素:"; while (p != NULL) { cout << p->data<<" "; p = p->next;//指向下一个元素 }}void PopElement(Node *RootNode){ if (RootNode->next == NULL)//链表为空,不再弹出 { return; } RootNode->data--; Node *Element2Del = RootNode->next; RootNode->next = Element2Del->next; delete Element2Del;}这里给出的是头插法,也就是始终在链表的头部插入和删除元素,但插入顺序和输出顺序是相反的,也可以使用尾插法,找到链表的最后一个元素,为提升效率,常用一个指针指向最后一个元素。
新闻热点
疑难解答