各种数据结构的存储结构描述

来源:互联网 发布:淘宝宝贝怎么设置套餐 编辑:程序博客网 时间:2024/05/21 06:24

1.线性表的顺序存储结构

#define ListSize 100

typedef struct

{

    DataType List[ListSize];

    int length;

}SeqList;

顺序表的基本运算:

void InitList(SeqList *L);

int ListEmpty(SeqList L);

int GetElem(SeqList L,int i,DataType *e);

int LocateElem(SeqList L, DataType e);

int InsertList(SeqList *L, int i, DataType e);

int DeleteList(SeqList *L, int i, DataType *e);

int ListLength(SeqList L);

void ClearList(SeqList *L);


2.单链表的存储结构

typedef struct Node

{

    DataType data;

    struct Node *next;

}ListNode, *LinkList;

单链表的基本运算:

void InitList(LinkList *head);

int ListEmpty(LinkList head);

ListNode *Get(LinkList head, int i);

ListNode *LocateElem(LinkList head, DataType e);

int LocatePos(LinkList head, DataType e);

int InsertList(LInkList head, int i ,DateType e);

int DeleteList(LinkList head, int i, DataType *e);

int ListLength(LinkList head);

void DestroyList(LinkList head);


3.循环单链表的存储结构

typedef struct Node

{

    DataType data;

    struct Node *next;

}ListNode, *LinkList;

4.双向链表的存储结构

typedef struct Node

{

    DataType data;

    struct Node *prior;

    struct Node *next;

}DListNode, *DLinkList;

5.静态链表的存储结构

        typedef int PtrToNode;   
        typedef PtrToNode List;   /*定义链表,其实和下面的节点是同一个结构指针,只是该指针永远指向表头*/
        typedef PtrToNode Position;  /*定义链表的节点*/
        typedef int ElementType;    /*定义存储的数据类型,为方便,这里是int 型,您可以使用别的数据类型,而只要在这里做一修改,比如将int 改为char */
        #define SpaceSize 100
    /* 链表节点的结构定义*/
        struct Node
        {
            ElementType Element;
            Position    Next;
        };

        struct Node CursorSpace[ SpaceSize ]; /*结构数组来存储数据*/
静态链表的运算
        /*下面的函数在后面的代码中介绍*/
        void InitializeCursorSpace( void );
        List MakeEmpty( List L );
        int IsEmpty( const List L );
        int IsLast( const Position P, const List L );
        Position Find( ElementType X, const List L );
        void Delete( ElementType X, List L );
        Position FindPrevious( ElementType X, const List L );
        void Insert( ElementType X, List L, Position P );
        void DeleteList( List L );
      void print(List L);
    Position CursorAlloc(void);
    void CursorFree(Position P);


6.多项式节点结构

typedef struct polyn

{

    float coef;

    int expn;

    struct polyn *next;

}PloyNode, *PLinkList;


7.栈的顺序存储结构

#define StackSize 100

typedef struct

{

    DataType stack[StackSize];

    int top;

}SeqStack;


顺序栈的基本运算

void InitStack(SeqStack *S);

int StackEmpty(SeqStack S);

int GetTop(SeqStack S, DataType *e);

int PushStack(SeqStack *S, DataType e);

int PopStack(SeqStack *S , DataType *e);

int StackLength(SeqStack S);

void ClearStack(SeqStack *S);


8.两个共享栈的数据结构定义

typedef struct

{

    DataType stack[StackSize];

    int top[2];

}SSeqStack;


9.链栈的数据结构定义

typedef struct node

{

    DataType data;

    struct node *next;

}LStackNode, *LinkStack;


链栈的基本运算

void InitStack(LinkStack *top);

int StackEmpty(LinkStack top);

int PushStack(LinkStack top, DataType e);

int PopStack(LinkStack top, DataType *e);

void GetTop(LinkStack top, DataType *e);

int StackLength(LinkStack top);

void DestroyStack(LinkStack top);


10.顺序队列的定义

#define QueueSize 40

typedef struct Squeue

{

    DataType queue[QueueSize];

    int front,rear;

}SeqQueue;


顺序队列的基本运算

void InitQueue(SeqQueue *SQ);

int QueueEmpty(SeqQueue SQ);

int EnterQueue(SeqQueue *SQ, DataType x);

int DeleteQueue(SeqQueue *SQ, DataType *e);



11.顺序循环队列

typedef struct Squeue

{

    DataType queue[QueueSize];

    int front, rear;

    int tag;

}SCQueue;


12.队列的链式存储结构

typedef struct QNode

{

    DataType data;

    struct QNode *next

}LQNode, *QueuePtr;

typedef struct

{

    QueuePtr front;

    QueuePtr rear;

}LinkQueue;


链式队列的基本运算

void InitQueue(LinkQueue *LQ);

int QueueEmpty(LinkQueue LQ);

int EnterQueue(LinkQueue *LQ, DataType e);

int DeleteQueue(LinkQueue *e, DataType *e);

int GetHead(LinkQueue LQ, DataType *e);

void ClearQueue(LinkQueue *LQ);


13.双端队列

typedef struct DQueue

{

    DataType queue[QueueSize];

    int end1,end2;

}DQueue;


14.串的顺序存储结构

typedef struct

{

    char str[MaxLength];

    int length;

}SeqString;


15. 堆串的数据结构定义

typedef struct

{

    char *str;

    int length;

}HeapString;


16.串的链式存储结构

#define ChunkSize 10

typedef strcut Chunk

{

    char ch[ChunkSize];

    struct Chunk * next;

}Chunk;

typedef struct

{

    Chunk *head;

    Chunk *tail;

    int length;

}LinkString;


17.二叉树的链式存储结构

typedef struct Node

{

    DataType data;

    struct Node *lchild;

    struct Node *rchild;

}*BiTree, BitNode;



0 0
原创粉丝点击