node->next = NULL ; //5、将链表的指针域指向空 printf("%d ",node->data); free(node); return 0 ; } 那么,这仅仅只是创建一个链表中的一个节点,为了好看,我们把创建节点封装成函数,以后想创建多少个节点,我们就可以反复调用一个函数来创建,会很方便: list_single *create_list_node(int data) { ...
int main() { struct Node *head = NULL; // 插入节点到有序链表中 insertOrdered(&head, 5); insertOrdered(&head, 1); insertOrdered(&head, 3); insertOrdered(&head, 2); insertOrdered(&head, 4); // 打印链表 printList(head); // 释放链表内存(注意:这里只是示例,实...
1//清空链表2voidclear_SLLink(SLLink*link)3{4SLNode* node = link->next;5while(node !=NULL)6{7SLNode* tmp =node;8node = node->next;9free(tmp);10}11link->next =NULL;12}1314//销毁链表15voiddestroy_SLLink(SLLink*link)16{17clear_SLLink(link);18free(link);19link =NULL;20} Vie...
2.向链表中插入元素 假如要在节点2的前面插入节点p,我们首先要找到节点2的前驱节点1,假设现在q指针指向节点1,则 (1)p->pNext=q->pNext; (2)q->pNext=p; 程序代码如下: //链表的第pos有效元素前面插入元素val,首先我们应该找到第pos个元素前面一个元素的位置; //当链表有3个元素时,pos=4,将不会进行...
首先我们要去利用结构体去定义我们链表的每一个结点,每一个结点主要是由两大部分构成,存放数据的部分,和存放指针的部分,这个指针就指向下一个结点。 typedef struct Node//使用结构体,定于链表的基础结构 { int data; struct Node *next; }Node; 我们在使用链表的时候,都会保留一空白的结点作为头节点,这个结点...
我们可以构建一个节点的结构体: typedef int ElemType;typedef struct NODE{ElemType data; //数据域struct NODE *next; //指针域}LNode, *LinkList;复制代码 其中data表示数据域,next表示指针域。因为我们只需要链表的首地址就可以遍历整个链表,所以我们可以用该结构体的指针表示链表。
一、构建链表结构体 structmk_list{structmk_list*prev,*next;}; //初始化链表 staticinlinevoidmk_list_init(structmk_list*list){list->next=list;list->prev=list;} //增加链表节点 staticinline void__mk_list_add(structmk_list*_new,structmk_list*prev,structmk_list*next){next->prev=_new;_new...
前插法:将新生成的结点依次插入头结点之后创建链表。 尾插法:将新生成的结点依次插入到链表的最后面,作为新链表的最后一个结点。 序插法:将新生成的结点依次插入后保证结点域数据的有序性。 定位法:新生成的结点依次插入到链表中指定的位置中。 2.遍历链表:就是对于某一个数据结构中所有元素按照一定的顺序依次...