实现链表逆序,空间复杂度为O(1)

来源:互联网 发布:nba新浪数据库 编辑:程序博客网 时间:2024/06/14 21:05

一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。

#include <iostream>using namespace std;struct  LinkNode{    int data;    struct LinkNode* next;};LinkNode* ReverseLink(LinkNode* head){    //声明三个指向链表节点的指针    struct LinkNode* nowHead = head;    struct LinkNode* sourceLink = head->next;    struct LinkNode* tempNode = NULL; //辅助指针    //进行翻转    while (sourceLink != NULL)    {        tempNode = sourceLink;//先保存链表头节点的下一个节点        sourceLink = sourceLink->next;        tempNode->next = nowHead;        nowHead = tempNode;    }    head->next = NULL;    return nowHead;}void PrintLink(struct LinkNode* node){    struct LinkNode* pcurrent = node;    while (pcurrent != NULL)    {        printf("%d ", pcurrent->data);        pcurrent = pcurrent->next;    }    printf("\n");}void test(){    struct LinkNode l1 = { 1, NULL };    struct LinkNode l2 = { 2, NULL };    struct LinkNode l3 = { 3, NULL };    l1.next = &l2;    l2.next = &l3;    l3.next = NULL;    struct LinkNode* node = ReverseLink(&l1);    PrintLink(node);}int main(){    test();    return 0;}
阅读全文
0 0
原创粉丝点击