zoukankan      html  css  js  c++  java
  • 链表的基本操作,逆置——C语言

    #include<stdlib.h>

    #include<stdio.h>
    typedef struct node {
      int data;
      struct node *next;
    }Node;

    Node *CreatList( int n )    /*n用于指定链表长度*/
    {
      int val, i;
      Node *phead, *p;
      phead = ( Node * )malloc( sizeof( Node ) );    /*建立一个带头结点的链表*/
      phead->next = NULL;
      printf( "输入链表节点数据:\n" );
      for( i = 0; i < n; i++ )
      {
        scanf( "%d", &val );
        p = ( Node * )malloc( sizeof( Node ) );
        p->data = val;
        p->next = phead->next;    /*倒插*/
        phead->next = p;
      }
      return phead;
    }

    void ReverseList( Node *phead )
    {
      Node *p, *q, *r;
      p = phead->next;
      q = NULL;    
      r = NULL;
      while( p->next != NULL )    /*r, q分别用于标记p的前后结点*/
      {
        q = p->next;
        p->next = r;
        r = p;
        p = q;
      }
      p->next = r;
      phead->next = p;
    }

    void PrintList( Node *phead )
    {
      Node *p;
      p = phead->next;
      while( p != NULL )
      {
        printf( "%d ", p->data );
        p = p->next;
      }
      printf( "\n" );
    }

    main()
    {
      Node *phead;
      phead = CreatList( 10 );
      PrintList( phead );
      ReverseList( phead );
      PrintList( phead );
    }

  • 相关阅读:
    Linux 查看CPU信息,机器型号,内存等信息
    TCPdump抓包命令详解
    nginx https 转发
    滚动效果
    phpexcel中文手册(转)
    Java数组操作十大方法 (转)
    ajax防止重复提交
    信用评分卡(A卡/B卡/C卡)的模型简介及开发流程|干货
    求方差分析与两样本T检验 区别
    互联网运营中的10大数据分析方法
  • 原文地址:https://www.cnblogs.com/liangchao/p/2697460.html
Copyright © 2011-2022 走看看