zoukankan      html  css  js  c++  java
  • 单链表几种操作

    转自:http://www.cnblogs.com/marrywindy/archive/2010/10/29/1864067.html

    代码
     /*
     purpose:实现链表的几种操作
      */
     #include "stdio.h"
     #include "stdlib.h"
     #include "malloc.h"
     
      struct SNode 
     {
         int ivalue;
         struct SNode* next;
     };
     
     /************************************************************************/
     /*   Tail insert   */
     /************************************************************************/
     SNode* createLinkList()
     {
         SNode* head,*s,*p;
         int ix;
         char ch;
         head=(SNode*)malloc(sizeof(struct SNode));
         if(NULL==head)
             exit(1);
         head->next=NULL;
         p=head;
         while (scanf_s("%d",&ix)==1)
         {
             s=(SNode*)malloc(sizeof(struct SNode));
             if(NULL==s)
                 exit(1);
             s->ivalue=ix;
             p->next=s;
             p=s;
         }
         p->next=NULL;  //No loop
         //p->next=head;      //Loop linklist
         return head;
     }
     
     /************************************************************************/
     /* print                                                                     */
     /************************************************************************/
     void printLinkList(SNode* pNode)
     {
         if(NULL==pNode)
             exit(1);
         SNode* p;
         p=pNode->next;
         //while (p!=pNode)  //Loop
         while(p!=NULL)        //No loop
         {
             printf("%d ",p->ivalue);
             p=p->next;
         }
         printf("\n");
     }
     
     /************************************************************************/
     /* IsLoop                                                                     */
     /************************************************************************/
     bool IsLoop(SNode* pNode)
     {
         SNode* p=pNode;
         SNode* q=pNode;
         while (q!=NULL && q->next!=NULL)
         {
             p=p->next;
             q=q->next->next;
             if (p==q)
                 return true;
         }
         return false;
     }
     
     
     
     int main()
     {
         SNode* sNode;
         sNode=createLinkList();
         printLinkList(sNode);
         bool im=IsLoop(sNode);
         if(im)
             printf("true\n");
         else
             printf("false\n");
         return 0;
     }


  • 相关阅读:
    TCP—为什么是AIMD?
    虚拟机是怎么实现的?
    漫谈linux文件IO
    关于大型网站技术演进的思考
    大公司里怎样开发和部署前端代码
    spawn-fcgi 代码介绍
    使用python传参form-data格式的txt请求接口
    实战scrapy抓取站长图片数据
    通过requests和lxml模块对网站数据进行爬取
    centos7.5下安装jenkins
  • 原文地址:https://www.cnblogs.com/youngforever/p/3104639.html
Copyright © 2011-2022 走看看