【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(九)2.5 线性表的链式表示和实现5、2.5 线性表的链式表示和实现6、2.5 线性表的链式表示和实现7

目录

2.5 线性表的链式表示和实现5

1、单链表基本操作的实现

(1)补充单链表的几个常用简单算法

2、具体实现

2.5 线性表的链式表示和实现6

1、单链表基本操作的实现

(1)补充单链表的几个常用简单算法

2、具体实现

2.5 线性表的链式表示和实现7

1、知识回顾

(1)类型定义

(2)变量定义

(3)重要操作

2、单链表的基本操作

3、单链表基本操作的实现

(1)取值

4、具体实现


2.5 线性表的链式表示和实现5

1、单链表基本操作的实现

(1)补充单链表的几个常用简单算法

【补充算法3】清空链表。

链表仍存在,但链表中无元素,成为空链表(头指针和头结点仍然在)。

【算法思路】依次释放所有结点,并将头结点指针域设置为空。

//清空链表
Status ClearList(LinkList &L){//将L重置为空表 
	Lnode *p, *q;//或LinkList p, q;
	p = L->next;
	while(p){//没到表尾 
		q = p->next;
		delete p;
		p = q;
	}
	L->next = NULL;//头结点指针域为空 
	return OK;
}

2、具体实现

//具体实现
#include <stdio.h>
#include <stdlib.h>

//操作算法中用到的预定义常量和类型
//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MaxSize 100

//Status是函数的类型,其值是函数结果状态代码
typedef int Status;
typedef int ElemType;

//单链表的初始化(算法2.6)(带头结点的单链表)
typedef struct Lnode{
	ElemType data;
	struct Lnode *next;
}LNode, *LinkList;

Status InitList_L(LinkList &L){
	L = new LNode;//或L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;
	return OK;
}

//清空链表
Status ClearList(LinkList &L){//将L重置为空表 
	Lnode *p, *q;//或LinkList p, q;
	p = L->next;
	while(p){//没到表尾 
		q = p->next;
		delete p;
		p = q;
	}
	L->next = NULL;//头结点指针域为空 
	return OK;
}

int main(){
	LinkList L;
	int choice, ans;
	while(1){
		printf("线性表的链式表示和实现5(菜单):\n");
		printf("1、单链表的初始化 2、单链表的清空\n");
		printf("请输入菜单序号:\n");
		scanf("%d", &choice);
		switch(choice){
			case 1:
				ans = InitList_L(L);
				if(ans){
					printf("初始化成功\n");
				}
				else{
					printf("初始化失败\n");
				}
				break;
			case 2:
				ans = ClearList(L);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值