- 1、线性表的动态分配顺序存储结构:
2、线性表的链表表示#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct { ElemType *elem;//存储空间基址 int length;//当前长度 int listsize;//当前分分配的存储容量 }sqlist;
typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList;
3、线性表的数组表示#define MAXSIZE 1000 typedef struct { ElemType data; int cur;//当前元素位置 }component, SLinkList[MAXSIZE];
4、双向链表typedef struct DulNode//结点 { /* data */ ElemType data; struct DulNode *prior;//前一个结点 struct DulNode *next;//后一个结点 }DulNode, *DulLinkList; typedef struct LNode //链表类型 { Link head, tail;//头尾结点 int len; }LinkList;
5、栈#define STACK_INIT_SIZE 100 ; # define STACKINCREMENT 10; typedef struct { /* data */ SElemType *head;//在栈构造之前和销毁之后都是NULL SElemType *top;//栈顶指针 int stacksize;//当前已分配的存储空间,以元素为单位 }Sqstack;
- 6、单链表队列---队列的链式存储结构
typedef struct QNode { QELemType data; struct QNode *next; }QNode, *QueuePtr; typedef struct { QueuePtr front;//队头指针 QueuePtr rear;//队尾指针 }LinkQueue;
- 7、循环队列--队列的顺序存储结构
define MAXSIZE 100 //最大队列长度 typedef struct { QELemType *base;//初始化的动态分配存储空间 int front;//头指针,若队列不为空指向的头元素 int rear;//尾指针,若队列不空,指向队列为元素的下一个位置 }SqQueue;
- 8、串的堆分配存储表示
typedef struct { char *ch; int len;//串长度 }HString;
- 9、串的块链存储表示
#define CHUNKSIZE 80//由用户定义大小 typedef struct Chunk { char ch[CHUNKSIZE]; struct Chunk *next; }; typedef struct $ { Chunk *head, *tail; int curlen;//当前长度 }LString;
- 10、数组的顺序存储表示
#include <stdary.h> #define MAX_ARRAY_DIM 8//维度 typedef struct { ElemType *base;//ji zhi int dim;//wei du int *bounds;//数组维度基址 int *constants;//? }Array;
- 11、稀疏矩阵的三元组顺序表存储表示
#define MAXSIZE 12500 typedef struct { int i,j;//row 下标和column下标 ElemType e; }Triple; typedef struct { Triple data[MAXSIZE + 1];//data[0]未使用 int mu, nu, tu;//矩阵行数,列数,非零元素个数 }TSMatrix;
- 未完。。。