静态链表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语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标CUR。
本程序适合初学者学习和模仿的一个静态链表的删除的生成过程。。。。
用C实现的静态链表
关于严蔚敏版数据结构的静态链表的代码实现,C语言实现
静态链表的使用 数据结构 C 静态链表 结构体数组
数据结构-基本算法-静态链表(学生时代源码,调试可运行)
数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现 数据结构 静态链表的实现
通过静态链表的实现,掌握静态链表的基本操作所用的思想方法。
有关c语言静态链表的创建 有兴趣可以看看啊
静态链表的基本操作,用codeblocks运行通过,包含初始化,插入,删除等。
静态链表实现文件的存储,一些基本功能的实现。C语言基础,课程设计。
数据结构笔记之线性表(-):静态链表表示与实现
本为主要介绍集合的基本运算、并且以静态链表的形式给出具体算法。
数据结构C语言版 静态链表实现集合运算 P33-34 编译环境:visualC++ 日期:2011年12月11日
我的数据结构作业,静态链表。望大家指点一二
图和代码相结合,详细讲解静态链表。通过生动活泼的对话让读者理解内村动态申请。
实现了静态链表的基本操作和存储实现,包括,初始化,插入,删除,输入函数,等。 初始化的时候链表被初始化为相邻元素即为链表的前后节点的形式,适合于初学者研究,自己编写,vc6.0编译运行均通过,如果错误请联系...
数据结构中的静态链表的操作: 1.增 2.删 3.改 4.查 欢迎指正
模拟实现内存分配——采用静态链表 数据结构课程设计 模拟实现内存分配——采用静态链表 数据结构课程设计 用静态链表是一种便于在不设“指针”的类型的高级程序设计语言中使用的链表类型。使用静态链表模拟内存...