报名网站建设公司哪里有,包装设计收费明细,模板网站和插件,常见的静态网页线性表的结构定义#xff1a; 顺序表的结构定义#xff1a; typedef struct
{int data[maxSize]; //存放顺序表元素的数组#xff0c;一般用 int A[maxSize];int length; //存放顺序表的长度,一般用 int n;
}SeqList; 单链表结点定义#xff1a; typedef struct L…线性表的结构定义 顺序表的结构定义 typedef struct
{int data[maxSize]; //存放顺序表元素的数组一般用 int A[maxSize];int length; //存放顺序表的长度,一般用 int n;
}SeqList; 单链表结点定义 typedef struct LNode
{int data; //存放结点的数据域struct LNode *next; //指向后继结点的指针
}LNode; 双链表结点定义 typedef struct DLNode
{int data; //存放结点的数据域struct DLNode *prior; //指向前驱结点的指针struct DLNode *next; //指向后继结点的指针
}DLNode; 顺序表的算法操作 按元素值的查找算法 int LocateElem (SeqList L, int e)
{int i;for(i1; iL.Length; i)if(eL.data[i])return i;return 0;
} 插入数据元素的算法 //在p的位置插入新的元素e
int insert(SeqList L, int p, int e) //为啥用L
{int i;if(p1 || pL.length1 || L.lengthmaxSize-1) //范围不正确return 0;for(iL.length; ip; --i) // 依次后移L.data[i1] L.data[i];(L.length);return 1;
} 初始化顺序表 //初始化顺序表
void InitList(SeqList L)
{L.length 0;
} 求指定位置元素 //e返回L中p的元素
int GetElem (SeqList L, int p,int e) //e用引用类型
{if(p1||pL.length)return 0;e L.data[p];return 1;
} 单链表的算法操作 尾插法 //n个元素存储在数组a中尾插法建立链表C
void CreatelistR(LNode *C, int a[], int n) //要改变的变量用引用型
{LNode *s, *r; //s指向新申请的结点r指向C的终端结点int i;C (LNode *)malloc(sizeof(LNode)); //申请C的头结点空间C-next NULL;rC; //此时的终端结点就是头结点for(i1; in; i) //为啥i不是i{s (LNode* )malloc(sizeof(LNode));s-data a[i];//用新结点接收a的一个元素r-next s; //r接纳新结点r r-next;//r指向终端结点以便接纳下一个结点}r-next NULL;
} 头插法 //n个元素存储在数组a中头插法建立链表C
void CreatelistF(LNode *C, int a[], int n) //要改变的变量用引用型
{LNode *s; int i;C (LNode *)malloc(sizeof(LNode)); //申请C的头结点空间C-next NULL;for(i1; in; i) //为啥i不是i{s (LNode* )malloc(sizeof(LNode));s-data a[i];//用新结点接收a的一个元素s-next C-next; //s所指向的指针域next指向C的开始结点C-next s;//头结点的指针域next指向s结点s成为新的开始结点}
} 双链表的算法操作 尾插法建立双链表 //尾插法建立双链表
void CreateDlistR(DLNode *L, int a[], int n)
{DLNode *s,*r;int i;L (DLNode*)malloc(sizeof(DLNode));L-next NULL;rL; // r始终指向终端结点开始头结点也是尾结点for(i1; in; i){s (DLNode*)malloc(sizeof(DLNode));s-data a[i];//将s插入到L的尾部并且r指向s这一部分是主要记忆代码r-next s;s-prior r;r s;}r-next NULL;} 查找结点算法 DLNode* searchNode(DLNode *C, int x)
{DLNode *p C-next;while(p! NULL){if(p-data x)break;p p-next;}return p;
} 插入结点的算法 s-next p-next;
s-prior p;
p-next s;
s-next-prior s; //假如p指向最后一个结点本行可去 删除结点的算法 q p-next;
p-next q-next;
q-next-prior p;
free(q); 转载于:https://www.cnblogs.com/frl520/p/9408476.html