链表的建立和基本运算

本文介绍了如何在C语言中定义单链表节点结构,并详细讲解了如何建立链表以及在链表中进行元素插入的操作。通过创建一个Win32 Console Application工程,在全局头文件中定义链表节点,然后实现具体函数来完成链表的基本运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在设计链表的各种运算之前,最重要的准备工作是定义链式存储(即链表)的结点类型,最简单的单链表的结点类型可由数据域data和指针域next两部分组成。然后再分别设计各种运算的具体函数。最后在主函数中实现链表的各种运算时,分别调用相应的函数即可。

新建一个“Win32 Console Application”工程,创建头文件global.h

#include <stdio.h>    // NULL, printf()等
#include <malloc.h>   // malloc()等
#include <string.h>

// 函数结果状态定义
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
#define OK 1
#define ERROR 0

typedef int Status;    // 函数返回类型(表示结果状态,如OK等)

创建头文件linklist.h

typedef char* ElemType;
typedef struct node {
   ElemType  data;     //数据域
   struct node *next;    //指针域
}LNode, *LinkList;     //定义单链表的结点结构、单链表类型指针

LinkList InitList(void);
Status DestoryList(LinkList &L);
Status ListInsert(LinkList &L,int i,ElemType e);
Status ListDelete(LinkList &L,int i,ElemType &e);
int ListLength(LinkList L);
Status GetElem(LinkList L,int i,ElemType &e);
int LocateElem(LinkList L,ElemType e);
Status PrintList(LinkList L);

创建一个“C++ Source File”文件linklist.cpp

#include "global.h"
#include "linklist.h"
// 操作结果:构造一个空链表 L
LinkList InitList(void) {
LinkList L;
	L=(LinkList)malloc(sizeof(LNode));//表头结点
	if(!L) return NULL; // 存储分配失败
	L->next=NULL; // 空表
	return L;
}
// 初始条件:链表 L 已存在。操作结果:销毁链表 L
Status DestoryList(LinkList &L) {
LinkList q;
	while (  L  ) {//从表头结点开始释放
		q=L->next;//预先前行到下一结点
		free(L);
		L=q;//工作指针跟踪下一结点
	}
	return OK;
}

// 操作结果:在L中第i个位置之前插入新的数据元素e




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值