⭐test.c是主函数,存放框架,测试函数 (1)创建一个链表 首先,我们可以类比顺序表,在创建顺序表的时候,是用一个结构体来创建的,所以我们可以用结构体创建,包括数据和下一个结构体的地址(用来找到下一个地址) typedef int SLTDataType; typedef struct SListNode { SLTDataType data; struct SListNode* next; ...
1、使用结构体定义一个节点的原型,包括存储数据的data和指向下一个节点的指针next。 //链表的结构体原型 typedef int SLDatatype; typedef struct SListNode { SLDatatype data;//数据 struct SListNode* next;//下一个节点的地址 }SLTNode; 2、利用next遍历整个链表,直到遇到NULL,打印链表数据 //链表打印 voi...
struct ListNode { int val; struct ListNode* next; } ListNode; // 创建一个新的链表节点 ListNode* createNode(int val) { ListNode* node = (ListNode*)malloc(sizeof(ListNode)); node->val = val; node->next = NULL; return node; } // 插入排序算法 ListNode* insertionSortList(ListNode* head...
voiddeletenode(listnode *head , listnode *temp){ if(!temp)return; if(temp->next){//删除其他结点 temp->val = temp->next->val; ListNode * temp = temp->next; temp->next = temp->next->next; deletetemp; } else{// 要删除的是最后一个节点 if(head == temp){// 链表中只有一个节点的...
ListNode* result = dummy->next;free(dummy); returnresult;} voidprintList(ListNode* head){ListNode* current = head; while(current !=NULL) {printf("%d ", current->val);current = current->next;} printf("\n");} intmain(){// 创建示例链...
// 释放内存while(result !=NULL) {ListNode* temp = result;result = result->next;free(temp);} return0;} 算法解析 该算法只需要对链表进行一次遍历,所以时间复杂度为 O(L),其中 L 是链表的长度。 空间复杂度为 O(1),算法只使用了常数...
// 将 p1 赋值给 p2,以便在下一次循环中使用 } p1 = p1->next; // 将 p1 指向下一个节点 } return L; // 返回操作后的链表 } 完整代码如下:#include <stdio.h> #include <stdlib.h> struct ListNode { int data; // 当前节点存储的数据 ...
1 双链表的定义和各种操作实现方法,代码如下;2 DualLinkList.htypedef int status;typedef int ElemType; //链表节点及链表数据表示定义typedef struct DualLinkListNode{ElemType data;struct DualLinkListNode *next;}DualLinkListNode,*DualLinkListList;//以下是单向链表操作函数原型//初始化操作status InitDualLink...
typedef int SLTDataType;//重定义数据类型,方便切换数据类型typedef struct SListNode//定义单链表结构 32位环境下共8个字节,{SLTDataType data;//定义数据struct SListNode*next;//指向下一个结构的指针,指向同类//SLTNode* next;}SLTNode;//重定义 缩写,在本行之后起效,在结构体中不能使用 ...
在上述代码中,定义了一个节点结构体ListNode,其中包含一个int类型的data成员和一个指向下一个节点的指针。接着定义了用于创建新节点、插入节点、删除节点、修改节点、遍历节点和清空链表等操作的子函数,并在main函数中演示了这些操作的使用例子。在使用完链表后一定要调用clearList函数释放内存空间。