1、顺序链表
//.h文件
#define MaxSize 50
typedef char ElemType;
typedef struct {
ElemType elem[MaxSize];
int length;
}SqList;
//.cpp文件
void InitList(SqList *&L){
L=(SqList*)malloc(sizeof(ElemType)*MaxSize);
L->length=0;
}
void DestroyList(SqList *L){
free(L);
}
int ListEmpty(SqList *L){
return L->length==0;
}
int ListLength(SqList *L){
return L->length;
}
void DispList(SqList *L){
int i;
if(ListEmpty(L))return;
for(i=0;i<L->length;i++){
printf("%c",L->elem[i]);
}
printf("\n");
}
int GetElem(SqList *L,int i,ElemType& e){
if(i<1||i>=L->length){
return 0;
}
e=L->elem[i-1];
return 1;
}
int LocateElem(SqList *L,ElemType e){
int i=0;
while(i<L->length&&L->elem[i]!=e)i++;
return i>=L->length?0:i+1;
}
int ListInsert(SqList * &L,int i,ElemType e){
int j;
if(i<1||i>L->length+1)
return 0;
i--;
for (j=L->length; j>i; j--) {
L->elem[j]=L->elem[j-1];
}
L->elem[i]=e;
L->length++;
return 1;
}
int ListDelete(SqList * &L,int i,ElemType &e){
int j;
if(i<1||i>L->length+1)
return 0;
i--;
for (j=i; j<L->length-1; j++) {
L->elem[j]=L->elem[j+1];
}
L->length--;
return 1;
}
2、链式链表
//.h文件
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkList;
//.cpp文件
#include "LinkList.h"
void InitList(LinkList *&L)
{
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
}
void DestroyList(LinkList* &L)
{
LinkList *p=L,*q=p->next;
while (q!=NULL) {
free(p);
p=q;
q=p->next;
}
free(p);
}
int ListEmpty(LinkList* L)
{
return L->next==NULL;
}
int ListLength(LinkList* L)
{
LinkList *p=L;int i=0;
while (p->next!=0) {
i++;
p=p->next;
}
return i;
}
void DispList(LinkList* L)
{
LinkList *p=L;
while (p->next!=NULL) {
p=p->next;
printf("%c",p->data);
}
printf("\n");
}
int GetElem(LinkList* L,int i,ElemType &e)
{
int j=0;
LinkList *p=L;
while(j<i&&p!=NULL){
j++;
p=p->next;
}
if(p==NULL){
return 0;
}else{
e=p->data;
return 1;
}
}
int LocateElem(LinkList *L,ElemType e)
{
LinkList *p=L->next;
int n=1;
while (p!=NULL&&p->data!=e) {
p=p->next;
n++;
}
if(p==NULL){
return 0;
}else{
return n;
}
}
int ListInsert(LinkList* &L,int i, ElemType e)
{
int j=0;
LinkList *p=L;
while (j<i-1&&p!=NULL) {
j++;
p=p->next;
}
if(p==NULL){
return 0;
}else{
LinkList *q=(LinkList *)malloc(sizeof(LinkList));
q->data=e;
q->next=p->next;
p->next=q;
return 1;
}
}
int ListDelete(LinkList* &L,int i,ElemType &e)
{ int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL){
j++;
p=p->next;
}
if(p==NULL){
return 0;
}else{
if(p->next!=NULL){
q=p->next;
p->next=q->next;
free(q);
return 1;
}else{
return 0;
}
}
}
分享到:
相关推荐
1.使用Python语言实现链表数据结构 2.基于类封装思想 3.实现链表增删改查功能 4.有测试数据
数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现
本项目以"用数据结构-链表实现通讯录管理系统"为主题,通过C语言实现了这一功能,旨在帮助用户管理他们的联系人信息。下面我们将深入探讨这个系统所涉及的主要知识点。 首先,我们来了解**链表**这一数据结构。链表...
总结来说,这个项目涵盖了数据结构中的栈,通过链表实现并使用C++模板技术,提供了代码的通用性和高效性。同时,驱动程序`StackDrive.cpp`提供了对栈操作的测试,确保了实现的正确性。对于学习和理解C++模板以及数据...
总的来说,《严蔚敏-数据结构》中的链表实现章节会详细讲解这些概念,并提供实例代码,帮助读者理解和掌握链表的使用。通过学习这部分内容,开发者能更好地理解和解决与链表相关的编程问题,提升编程能力。
总的来说,"数据结构之链表合并算法.pdf"这份文档可能详细介绍了链表合并算法的原理、实现方法、性能分析和应用案例,为学习者提供了一套全面的教程。通过深入学习,可以增强对数据结构的理解,提高解决实际问题的...
数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现
不过,上述基本思路已经足以展示如何利用双链表实现大数阶乘的计算。 在给定的“jiecheng”文件中,可能包含了实现这个功能的源代码或测试数据。通过分析和运行这些代码,你可以更直观地理解双链表在大数阶乘计算中...
数据结构 基于链表实现的优先队列 Cpp文件
本文将深入探讨一种特殊的数据结构表示——三叉链表表示的二叉树。这种表示方式在C++语言中尤为常见,它允许我们高效地创建、插入、删除节点以及进行循环算法遍历二叉树。 首先,我们要理解什么是二叉树。二叉树是...
本主题主要关注C#语言中的链表实现。 在C#中,System.Collections.Generic命名空间提供了一个名为LinkedList类,用于实现链表数据结构。LinkedList类包含节点(LinkedListNode)作为链表中的元素,每个节点存储一个...
在这个数据结构——链表的实现中,我们将深入探讨如何用C++来创建一个链表类,并实现搜索、删除、插入和查找等基本操作。 首先,链表的基本思想是使用节点(或称为元素)来存储数据,每个节点包含两部分:数据域和...
本篇将详细讲解标题和描述中提及的五种链表实现:单链表、顺序表、双向链表、循环链表以及附加头结点链表。 首先,单链表是最基础的链表类型,每个节点包含数据和指向下一个节点的指针。它的优点在于插入和删除操作...
链表 实现 c++ cpp 数据结构 作业 链表 实现 c++ cpp 数据结构 作业
数据结构C语言链表的实现
通讯录管理系统数据结构C语言版链表实现实验报告.doc
在C++中,链表是一种常见的数据结构,它不同于数组,不需要连续的内存空间来存储元素。本项目专注于C++实现的单链表,提供了一个完整的可运行示例,包括`main.cpp`主程序,以及`linklist.h`和`node.h`两个头文件,...
数据结构实现C++线性链表,实现增删改查基本方法
在本话题中,我们将深入探讨“数据结构-链表逆置算法实现”。链表逆置是指将链表中的元素顺序反转,即原本的第一个元素变为最后一个,最后一个元素变为第一个,以此类推。这个过程对于理解和掌握链表操作非常有帮助...