带头结点的链表实现

前言

(1)掌握并熟练运用了c++语言的基本数据类型与各种表达式,程序的流程控制语句;
(2)使用了函数,掌握了函数的定义以及函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握指针变量的作用域与生存期,了解函数的作用域。
(3)熟练掌握线性表的链式存储表示方法的特点,灵活应用适当的存储形式解决具体问题。
(4)理解掌握宏定义及结点类型使用,灵活运用指针变量。

一、什么是带头结点的单链表?其与不带头结点的单链表有何区别?

1.在单链表的首元结点之前增加一个特殊的结点,称为头结点。
2.第一个结点的操作和表中其他结点的操作相一致,无需进行特殊处理;
无论链表是否为空,都有一个头结点,因此空表和非空表的处理也就统一了。

二、使用步骤

1.菜单函数

void DestroyList(LinkNode* L)
{
   
	LinkNode* pre = L, * p = L->next;
	while (p != NULL)
	{
   
		free(pre);
		pre = p;
		p = pre->next;
	}
	free(pre);
}
int main()
{
   
	int minp;
	LinkList L;
	int len, i, n, t, loc1, e, choice = 0;
	int loc2, data2, loc3;
	int* ele = &e;
	L = (LinkList)malloc(sizeof(LinkNode));
	L->next = NULL;
	while (1)
	{
   
		cout << "*****************************************" << endl;
		cout << "1.构造一个带头结点的空链表" << endl;
		cout << "2.建立具有n的元素链表" << endl;
		cout << "3.链表中元素最小值为:" << endl;
		cout << "4.链表中元素最大值为:" << endl;
		cout << "5.链表中元素求和:" << endl;
		cout << "6.排序输出:" << endl;
		cout << "7.逆置输出单链表" << endl;
		cout << "8.统计单链表结点的个数" << endl;
		cout << "9.查询指定位置的数据" << endl;
		cout << "10.在指定位置插入指定元素" << endl;
		cout << "11.删除指定位置的数据" << endl;
		cout << "12.退出" << endl;
		cout << "******************************************" << endl;
		cout << "请输入菜单序号:" << endl;
		cin >> choice;

2.控制结构

if (choice == 12)
			break;
		switch (choice)
		{
   
		case 1:
			InitList(L);
			cout << "成功初始化" << endl;
			break;
		case 2:
			cout << "选择要创建链表的方法" << endl;
			cout << "1.头插法\t2.尾插法" << endl;
			cin >> t;
			if (t == 1)
			{
   
				int a1[MAXSIZE];
				cout << "请输入需要多少个节点" << endl;
				cin >> n;
				for (int i = 0; i < n; i++)
				{
   
					cout << "请输入第" << i + 1 << "个节点的数据" << endl;
					cin >> a1[i];
				}
				CreateList_F(L, a1, n);
				printf("头插法建立单链表,遍历输出单链表:");
				DispList(L);
			}
			else
			{
   
				int a2[MAXSIZE];
				cout << "请输入需要多少个节点" << endl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的陈同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值