就地逆置就是将动态数组中的所有元素逆置,空间复杂度为O(1)。 它可以说是线性表最重要的应用了,下面用多种方法分别实现顺序表和单链表的就地逆置。 顺序表的就地逆置回顾顺序表的定义: 123456typedef int ElemType;typedef struct SeqList{ ElemType * elem; int length; int size;}SeqList,ListPtr; 1. 设置中间量12345678void SeqListReverse_1(SeqList * list){ ElemType temp; for(int i=0;i<(list->length)/2;i++){ temp=list->elem[i]; list->elem[i]=list->elem[list->length-i-1]; list->elem[list->length-i-1]=temp; }} 2. 使用地址指针两端均设置一个指针,两指针逐渐向中间靠拢,指针交错时 ...
单链表是最简单确定链表,由一系列节点组成的序列,包括三部分:头指针、头节点、元节点。其中头节点根据实际需求可以不用。有头节点的优点是可保证链表非空,便于判断其他无效的指针即空指针。 单链表节点的定义单链表的节点包括数据域和指针域。指针域中的指针指向下一个节点;数据域用于存放数据,存放的数据也可以是指针类型。 12345typedef int DataType;typedef struct LinkListNode{ DataType data; struct LinkListNode * next;}LinkListNode, * NodePtr; 虽然这里我还定义了NodePtr这个指针类型,但是我不太喜欢使用。因为在后面的程序中没有看到*可能会忘记它是一个指针。把它写在这里是因为大多数经典教材都写了的。 单链表用熟练之后就可以把LinkListNode直接改为Node,当然前提是不会和后面的树或图产生歧义。 单链表的初始化下面的单链表默认都带头节点。 法一:通过返回值进行传递1234567891011121314LinkListNode * InitLinkL ...
顺序表的定义顺序表这种数据结构类似数组。除此之外,还要求记录当前表的长度和分配时定义的表的最大长度。 法一:使用动态数组123456typedef int ElemType;typedef struct SeqList{ ElemType * elem; int length; int size;}SeqList,* ListPtr; 法二:使用静态数组1234567typedef int ElemType;#define MAXSIZE 10typedef struct SeqList{ ElemType elem[MAXSIZE]; int length; int size;}SeqList,* ListPtr; 至于选用哪种定义方式,肯定还得看实际情况。我更倾向于使用动态数组。因为动态数组使用更灵活,也更节省空间。而且后面的一些基本操作,比如插入,如果数组的大小不够,动态数组还可以重新分配内存大小。所以,后面的操作也都以动态数组为例。 顺序表的初始化初始化顺序表,要求给表分配内存空间,同时记录下最大长度,并把当前长度记为0。 法一:通过返 ...
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment
avatar
Sato
我们的前方究竟会通往何处?
Follow Me In Github
公告

莱莎的炼金工房

十年炼金无人问,一朝肉腿天下知。

住在村裡的萊莎有如鄰家女孩,是一位“再普通不過”的少女。
某日,萊莎一行下定決心,前往禁止進入的「浮島對岸」,展開首次探險活動。
于是,僅限今夏的冒險,从此开始。