数据结构
TysonSir
这个作者很懒,什么都没留下…
展开
-
查找元素x,若x存在,则与其后继交换,否则将x插入,使顺序表有序
//二分法查找x,找到则返回元素索引,找不到则返回不大于x的最大元素索引的相反数int SearchByElem(SqList *L, ElemType x);//第i个数据之前插入xvoid InsertByIndex(SqList *L, int i, ElemType x);//交换数据值void swap(ElemType *x, ElemType *y);//查找元素x,若x存在,则与其后继交换,否则将x插入,使顺序表有序void SearchSwapInsert(SqList *L原创 2017-03-27 22:44:28 · 783 阅读 · 0 评论 -
带头节点的单链表练习
//在elem后插入enew,若elem不存在,则在末尾插入void insertByData(LinkList L, ElemType elem, ElemType enew);void insertByData2(LinkList L, ElemType elem, ElemType enew);void insertByData3(LinkList L, ElemType elem, ElemType enew);//倒数第n个元素之前插入enew,若L长度小于n,则插入开头LNode *原创 2017-03-27 22:56:20 · 888 阅读 · 0 评论 -
无头节点的单循环链表中删除指针s所指结点的前驱结点
//返回L后第n个节点(n可超过L的总节点个数)LNode *creLNodePoint(CLinkList L, int n);//删除s的前驱节点void delPrior(LNode *s);原创 2017-03-27 23:03:48 · 9257 阅读 · 0 评论 -
设以带头结点的双向循环链表表示的线性表L= (a1,a2,…,an),试写一时间复杂度O(n)的算法,将L改造为 (a1,a3,…,an,…,a4,a2)。
/*将L中的元素,按如下规则插入新表,并返回新表。(1,2)->(1,3,2)->(1,3,4,2)->(1,3,5,4,2)->(1,3,5,6,4,2)->...*/DuLinkList Transform(DuLinkList L);原创 2017-03-27 23:05:52 · 12708 阅读 · 1 评论 -
利用顺序栈实现:判别表达式中括弧是否正确配对(BracketMatch函数)
/*假设一个算数表达式中包含圆括弧、方括弧和花括弧三种类型的括弧,编写一个判别表达式中括弧是否正确配对的BracketMatch函数。*/int BracketMatch(SElemType *str);原创 2017-03-30 20:42:40 · 3796 阅读 · 0 评论 -
带头结点的单链表上将后k个结点变换为前k个结点的操作
写出单链表的类型定义。然后编写一个函数,实现在带头结点的单链表上将后k个结点变换为前k个结点的操作。 例如:若表中原来元素为:8 5 6 9 7 4 3 设k=3,则变换后为:7 4 3 8 5 6 9原创 2017-05-25 14:48:43 · 863 阅读 · 0 评论 -
计算二叉树中值为data的结点所在的层数
定义二叉树的二叉链表,设其元素为整数。然后编写函数,计算二叉树中值为x结点所在的层数。原创 2017-05-25 15:54:24 · 6276 阅读 · 0 评论 -
通过二叉树的前序和中序遍历新建一个二叉树
BTree CreateBTreeByPreIn(char pre[], char in[], int n);//通过前序中序创建一个二叉树原创 2017-06-04 20:05:58 · 508 阅读 · 0 评论