首页 > 代码库 > (源代码见大话数据结构)线性表—静态链表
(源代码见大话数据结构)线性表—静态链表
#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAXSIZE 1000 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALS 0 typedef int ElemType; typedef int Status; typedef struct { ElemType data; int cur; } Component,StaticLinkList[MAXSIZE]; Status InitList(StaticLinkList space); int Malloc_Sll(StaticLinkList space); Status ListLength(StaticLinkList space); Status ListInsert(StaticLinkList L,int i,ElemType e); int main() { StaticLinkList l; int i; InitList(l); ListInsert(l,1,1314); ListInsert(l,1,5778); ListInsert(l,1,890890); i=l[MAXSIZE-1].cur; printf("%d\n",ListLength(l)); while(i) { printf("%d\n",l[i].data); i=l[i].cur; } return 0; } 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; i=space[0].cur; if(i) { space[0].cur=space[i].cur;//因为没使用的分量组成一个备用链表? } return i; } Status ListLength(StaticLinkList L) { int k=L[MAXSIZE-1].cur,length=0; while(k) { k=L[k].cur; length++; } return length; } Status ListInsert(StaticLinkList L,int i,ElemType e) { int j,k,l; k=MAXSIZE-1; if(i<1||i>ListLength(L)+1) return ERROR; j=Malloc_Sll(L); if(j) { L[j].data=e; for(l=1;l<i;l++) { k=L[k].cur; } L[j].cur=L[k].cur; L[k].cur=j; return OK; } return ERROR; }
实战中的BUG:
1.静态链表的插入ListInsert(StaticLinkList L,int i,ElemType e),i是第i个元素,静态链表中第一个元素(即下标为零的元素)相当于单链表的头结点作用,LitsLength(L)是算的静态链表中数据元素的个数。数据元素与元素不同,元素是指数组中的元素,数据元素是数组中被使用的分量。因为没搞清这两个概念,把插入函数中的if()搞错了。/(ㄒoㄒ)/~~
2.静态链表中数据元素的个数LitsLength(L),同样因为搞混了概念,把数组中第一个元素也算了进去。。
(源代码见大话数据结构)线性表—静态链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。