本文章着重对链表功能的实现。
关于链表的创建在上一篇文章:
初识-链表-创建
增加链表结点
void add_LinkNode (LinkNode *p, int n) /* n 为需要增加的结点位置的序号(从 1 开始数) */
{
/* 将结点的指针域指向需要增加的结点的前一个结点 */
for (int i = 1; i < n && p -> next != NULL; i ++, p = p -> next){}
LinkNode *node = new LinkNode;
/* 定义变量 data 用来接受新增的值 */
int data;
cout << "请输入增加结点的值:\n";
cin >> data;
/* 将输入的值赋给增加的结点的数据域 */
node -> data = data;
/* 将结点 p 指向的下一结点的位置赋给结点 node */
node -> next = p -> next;
/* 将结点 node 的位置赋给结点 p*/
p -> next = node;
}
删除链表结点
void del_LinkNode (LinkNode *p, int n) /* n 为需要删除的链表结点的序号 */
{
/* 将结点的指针域指向需要删除的结点的前一个结点 */
for (int i = 1; i < n && p -> next != NULL; i ++, p = p -> next){}
/* 将结点指向需要删除的结点的下一个结点 */
p -> next = p -> next -> next;
}
修改链表结点的值
void change_LinkNode (LinkNode *p, int n) /* n 为需要修改的链表结点的序号 */
{
/* 将结点的指针域指向需要修改的结点 */
for (int i = 1; i <= n && p -> next != NULL; i ++)
{
p = p -> next;
}
int data;
cout << "请输入修改值:\n";
cin >> data;
p -> data = data;
}