静态链表staticList.h
#include <stdio.h> #define MAXSIZE 1000 #define ERROR 0 #define OK 1 #define FALSE 0 #define TRUE 1 typedef int Status; typedef int ElemType; typedef struct{ ElemType data; //数据 int cur; //游标(Cursor) } Component,StaticLinkList[MAXSIZE]; void ShowMenu(); void ShowList(StaticLinkList space); Status InitList(StaticLinkList space); int Malloc_SLL(StaticLinkList space); int ListLength(StaticLinkList space); Status ListInsert(StaticLinkList space,int i,ElemType e); Status ListDelete(StaticLinkList space,int i); void Free_SLL(StaticLinkList sppace,int k);
staticList.c
#include "staticList.h" int main(){ int cmd,i; ElemType e; StaticLinkList space; ShowMenu(); scanf("%d",&cmd); while(cmd){ switch(cmd){ case 1: InitList(space); break; case 2: ShowList(space); break; case 3: printf("请输入插入位置和数据:"); scanf("%d %d",&i,&e); if(!i){ break; } if(ListInsert(space,i,e)!=OK){ printf("插入失败!\n"); } while(i){ printf("请输入插入位置和数据:"); getchar(); scanf("%d %d",&i,&e); if(!i){ break; } if(ListInsert(space,i,e)!=OK){ printf("插入失败!\n"); } } break; case 4: printf("请输入删除元素的位置:"); scanf("%d",&i); if(!i){ break; } if(ListDelete(space,i)!=OK){ printf("删除失败!\n"); } while(i){ printf("请输入删除元素的位置:"); getchar(); scanf("%d",&i); if(!i){ break; } if(ListDelete(space,i)!=OK){ printf("删除失败!\n"); } } break; case 0:exit(0);break; default:exit(-1);break; } ShowMenu(); getchar(); scanf("%d",&cmd); } return 0; } void ShowMenu(){ char *str="\t\t*******************************"; printf("%s\n",str); printf("\t\t1.初始化链表\n"); printf("\t\t2.显示链表数据\n"); printf("\t\t3.插入数据\n"); printf("\t\t4.删除数据\n"); printf("\t\t0.退出\n"); printf("%s\n",str); } void ShowList(StaticLinkList space){ int i,j,k; j=0; k=space[0].cur; i=space[MAXSIZE-1].cur; if(i!=0){ printf("\t\t"); while(i){ if(j%5==0){ printf("\n"); printf("\t\t"); } j++; printf("%d ",space[i].data); i=space[i].cur; } printf("\n"); }else{ printf("\t\t空表\n"); } } Status InitList(StaticLinkList space){ int i; for(i=0;i<MAXSIZE-1;i++){ space[i].cur=i+1; } space[MAXSIZE-1].cur=0; return OK; } int Malloc_SLL(StaticLinkList space){ int i=space[0].cur; if(space[0].cur){ space[0].cur = space[i].cur; } return i; } int ListLength(StaticLinkList space){ int i,j,length; i=space[MAXSIZE-1].cur; length=0; if(i==0){ length=0; }else{ j=space[0].cur; while(i){ length++; i=space[i].cur; } } return length; } Status ListInsert(StaticLinkList space,int i,ElemType e){ int j,k,l; k=MAXSIZE-1; if(i<1||i>ListLength(space)+1){ return ERROR; } j=Malloc_SLL(space); if(j){ space[j].data=e; for(l=1;l<i;l++){ k=space[k].cur; } space[j].cur=space[k].cur; space[k].cur=j; return OK; } return ERROR; } Status ListDelete(StaticLinkList space,int i){ int j,k; k=MAXSIZE-1; if(i<1||i>ListLength(space)){ return ERROR; } for(j=1;j<i;j++){ k=space[k].cur; } j=space[k].cur; space[k].cur=space[j].cur; Free_SLL(space,j); return OK; } void Free_SLL(StaticLinkList space,int k){ space[k].cur=space[0].cur; space[0].cur=k; }
相关推荐
静态链表是一种在内存中预先分配好固定大小的存储空间,并通过指针链接节点的数据结构。在C语言中,静态链表的实现通常涉及到结构体、指针和数组的运用。下面将详细介绍静态链表的概念、优点、缺点以及如何用C语言...
静态链表是一种特殊形式的数据结构,通常在内存空间有限或者需要预分配所有元素的情况下使用。相较于动态链表,静态链表在内存管理上有所不同,因为它的节点是在编译时静态分配的。下面将详细讨论静态链表的实现及其...
静态链表的实现和操作 静态链表是一种常用的数据结构,静态链表是指在程序设计中,链表的结点是预先分配的,且链表的长度固定不变。静态链表的优点是可以快速地插入、删除元素,并且可以避免动态分配内存带来的开销...
在C语言中,静态链表是一种特殊的链表实现方式,与传统的动态链表不同,它在编译时就分配了所有节点的内存空间。这种数据结构在某些情况下能提供更高效的内存管理和操作,尤其是在内存有限或者对内存分配有特殊要求...
c语言实现的静态链表
静态链表是一种特殊类型的数据结构,主要用于实现线性数据集合。与动态链表不同,静态链表的存储空间在编译时就已经固定,这使得它在某些场景下具有一定的优势。以下是对静态链表操作的详细说明: 1. 增加元素:在...
静态链表与传统的动态链表不同,动态链表中的节点在内存中是分散存储的,而静态链表的所有节点存储在预先分配的连续内存空间中。这种设计提供了更高效的内存管理,但同时也限制了表的大小,因为必须在编译时就确定表...
### 静态链表的使用 #### 一、静态链表的概念与特点 静态链表是一种特殊的数据结构,它结合了链表和数组的特点。通常,在编程中链表是通过指针连接各个节点实现的,而静态链表则是利用数组来模拟链表的行为。在...
静态链表和动态链表详细讲解教程 本资源讲解了链表的基本概念和实现方式,着重介绍了静态链表和动态链表的区别和应用场景。链表是一种常见的数据结构,它由多个节点组成,每个节点都包含一个数据域和一个指向下一个...
静态链表是一种在内存中预先分配好固定数量节点的数据结构,与动态链表不同,它不依赖于堆内存的分配。这种数据结构在某些特定情况下,如资源受限或需要高效预分配的情况,可能会有优势。在本场景中,我们探讨的是...
静态链表一、静态链表的定义 二、静态链表的设计 三、静态链表的操作 总结 附录 前言 你认识静态链表吗?听起来是不是很陌生呢?本文将较为详细的向你介绍它,感兴趣的话就一起来看看吧。 一、静态链表的定义 ...
静态链表是一种特殊的链式存储结构,它与传统的动态链表不同,因为它在编译时就固定了存储空间,常用于内存有限或者需要预先分配所有元素的场合。在这个实现中,我们将探讨静态链表的基本操作,包括初始化、查找、...
静态链表是一种特殊的链式数据结构,它与常规动态链表有所不同,主要在于存储方式和内存分配。 静态链表,顾名思义,与动态链表相对,其链表节点是在编译时静态分配的,而不是在运行时动态分配。这种设计减少了动态...
对于线性链表,也可用一维数组来进行描述。这种描述方法便于在没有指针类型的高级程序设计...用数组描述的链表,即称为静态链表。在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标CUR。
本程序适合初学者学习和模仿的一个静态链表的删除的生成过程。。。。
静态链表是一种特殊形式的数据结构,它在C和C++编程中被用于组织和操作数据。与传统的动态链表不同,静态链表的节点不是在运行时动态分配内存,而是在编译时就预设了存储空间。这种实现方式使得静态链表在某些情况下...
关于严蔚敏版数据结构的静态链表的代码实现,C语言实现