链表操作教程:添加、删除与内存管理

发布时间:2024-12-22 02:45

Excel删除超链接,右键选择‘超链接’删除 #生活技巧# #数码产品使用技巧# #办公软件快捷键#

单向链表

最新推荐文章于 2024-09-09 21:22:46 发布

JACK H SPRROW 于 2021-01-30 20:16:29 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

#include
#include<stdlib.h>
using namespace std;

struct link
{
int data;
struct link* next;
};

struct link* Add(struct link* head)
{
struct link* p = NULL, * pr = head;
p = (struct link*)malloc(sizeof(struct link));
if (p == NULL)
{
cout << “" << endl;
cout << “申请内存失败!” << endl;
exit(0);
}
if (head == NULL)
{
head = p;
}
else
{
while (pr->next != NULL)
{
pr = pr->next;
}
pr->next = p;
}
cin >> p->data;
cout << "
” << endl;
p->next = NULL;
return head;
}

void Display(struct link* head)
{
int i = 1;
struct link* p = head;
while (p != NULL)
{
cout <<"("<<i<<")"<<"->"<< p->data <<" ";
p = p->next;
i++;
}
cout << endl;
}

void FreeMemory(struct link* head)
{
struct link* p = head, * pr = NULL;
while (p != NULL)
{
pr = p;
p = p->next;
free(pr);
}
}

struct link* Del(struct link* head, int nodeData)
{
struct link* p = head, * pr = head;
if (head == NULL)
{
cout << “" << endl;
cout << “链表为空!” << endl;
return 0;
}
while (nodeData!=p->data && p->next != NULL)
{
pr = p;
p = p->next;
}
if (nodeData == p->data)
{
if (p == head)
{
head = p->next;
}
else
{
pr->next = p->next;
}
free§;
}
else
{
cout << "
” << endl;
cout << “未找到要删除的元素!” << endl;
}
return head;
}

int main()
{
struct link* head=NULL;
char c;
int key=0,nodeData=0;
while (1)
{
cout << “" << endl;
cout << "
1—添加新结点 2—删除某个结点 " << endl;
cout << "
3— 其他—退出链表操作 " << endl;
cout << "
” << endl<<endl;
cout << “请输入想要执行操纵的代表数字:” << endl;
cin >> key;
cout << “" << endl;
switch (key)
{
case 1:
while (1)
{
cout << “请输入数值:” << endl;
head = Add(head);
Display(head);
cout << "
” << endl;
cout << “是否继续输入数值? 请输入:N或Y (N代表否,Y代表是)” << endl;
cin >> c;
cout << “*******************************************************” << endl;
if (c == ‘N’ || c == ‘n’)
{
break;
}
else if (c == ‘Y’ || c == ‘y’)
{

}}break;case 2:Display(head);cout << "*******************************************************" << endl;cout << "请输入要删除的数据:" << endl;cin >> nodeData;head = Del(head, nodeData);cout << "*******************************************************" << endl;Display(head);break;default:cout << "*******************************************************" << endl;cout << "已清除链表所占内存空间!" << endl;FreeMemory(head);return 0;break;} }

1234567891011121314151617181920

}

网址:链表操作教程:添加、删除与内存管理 https://www.yuejiaxmz.com/news/view/536143

相关内容

Android新手教程之怎样在桌面添加与删除程序快捷方式
链表删除
不借助工具手动清除Win11“添加或删除程序”中的残留卸载项条目
2023年最新实操翻新listing教程
Linux基础之查看、添加、修改、删除用户
WPS表格高效操作:快速删除多余行和列的技巧
Java操作mongodb增删改查的基本操作实战指南
实用小技巧:奥迪Q5L应用下载及车载Carpaly如何添加删除程序
手机垃圾内存删除全部清理软件
内存管理 浅析 内存管理/内存优化技巧

随便看看