您的位置:首页 > 其它

简单的单链表

2017-02-05 15:18 225 查看
下面介绍一下单链表,给出了链表元素的插入,删除,显示函数,并且给出明确注释。

#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;
}


这里给出的是头插法,也就是始终在链表的头部插入和删除元素,但插入顺序和输出顺序是相反的,也可以使用尾插法,找到链表的最后一个元素,为提升效率,常用一个指针指向最后一个元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: