zoukankan      html  css  js  c++  java
  • 数据结构C---单链表的创建及遍历

    # include<stdio.h>
    # include<malloc.h>
    # include<stdlib.h>
    typedef struct Node{
      int data;
      struct Node *pnext;
    }Node,*PNODE;
    PNODE creatList(void);
    void travelList(PNODE pHead);
    int main(){
        PNODE pHead=NULL;
        pHead=creatList();
        travelList(pHead);
    return 0;
    }
    //创建链表,需要内存空间
    
     PNODE creatList(void){ 
    //生成一个头结点,phead指向头结点
        int len;
        int i;
        int val;
        PNODE pHead=(PNODE)malloc(sizeof(Node));
        if(NULL==pHead){
            printf("分配内存失败");
            exit(-1);
                    }
        PNODE ptail=pHead;
        ptail->pnext=NULL;
        printf("input the numbers:len=");
        scanf("%d",&len);
        for(i=0;i<len;i++)
        {   printf("输入第%d元素",i+1);
            scanf("%d",&val);   //
    
            PNODE pnew=(PNODE)malloc(sizeof(Node));
            if(NULL==pnew){
            printf("分配内存失败");
            exit(-1);
                    }
            pnew->data=val;
            ptail->pnext=pnew;
            pnew->pnext=NULL;
            ptail=pnew;                
            }
            return pHead;
        
    }
    void travelList(PNODE pHead){
        PNODE p;
        p=pHead->pnext;
        while(NULL!=p)
        {   printf("%d",p->data);
            p=p->pnext;
        }
        printf("
    ");
        return ;            
    }

    主要原因--注意在scanf("%d "),不用加 。因为本身我们通过键盘敲如都会加回车

    函数参数个数变化

    /*
    遍历仅需要头指针
    寻找单链表中的第i个节点;并在第i个节点后面插入节点s
    */
    # include<stdio.h>
    # include<malloc.h>
    # include<stdlib.h>
    typedef struct Node{
      int data;
      struct Node *pnext;
    }Node,*LinkList;
    typedef int Status;
    void creatList(LinkList L,int n);
    void travelList(LinkList L);
    
    int main(){
        LinkList L=(LinkList)malloc(sizeof(Node));
        int len;
        printf("input the length of Link,len=");
        scanf("%d",&len);
        creatList(L,len);
        travelList(L);
    return 0;
    }
    //创建链表,需要内存空间
      void creatList(LinkList L,int n)
    {LinkList p,r;
        int i;
        int val;
        r=L;
        for(i=0;i<n;i++)
        {   printf("输入的是第%d个元素",i+1);
            scanf("%d",&val);
            p=(Node*)malloc(sizeof(Node));
            p->data=val;
            r->pnext=p;
            r=p;
        } 
        r->pnext=NULL;
    }
    
    void travelList(LinkList L){
        LinkList p=L->pnext;
        while(NULL!=p)
        {   printf("%d",p->data);
            p=p->pnext;
            }
            printf("
    ");
                
    }

    方式二、利用LinkList中的*L作为参数,在创建链表函数中

    /*
    遍历仅需要头指针
    寻找单链表中的第i个节点;并在第i个节点后面插入节点s
    */
    # include<stdio.h>
    # include<malloc.h>
    # include<stdlib.h>
    typedef struct Node{
      int data;
      struct Node *pnext;
    }Node,*LinkList;
    typedef int Status;
    void creatList(LinkList *L,int n);
    void travelList(LinkList L);
    
    int main(){
        LinkList L=(LinkList)malloc(sizeof(Node));
        int len;
        printf("input the length of Link,len=");
        scanf("%d",&len);
        creatList(&L,len);
        travelList(L);
    return 0;
    }
    //创建链表,需要内存空间
      void creatList(LinkList *L,int n)
    {LinkList p,r;
        int i;
        int val;
        *L=(LinkList)malloc(sizeof(Node));
        r=*L;
        for(i=0;i<n;i++)
        {   printf("输入的是第%d个元素",i+1);
            scanf("%d",&val);
            p=(Node*)malloc(sizeof(Node));
            p->data=val;
            r->pnext=p;
            r=p;
        } 
        r->pnext=NULL;
    }
    
    void travelList(LinkList L){
        LinkList p=L->pnext;
        while(NULL!=p)
        {   printf("%d",p->data);
            p=p->pnext;
            }
            printf("
    ");
                
    }
  • 相关阅读:
    黎活明给程序员的忠告
    servlet单实例多线程模式
    Servlet 获取多个参数
    Java Servlet学习笔记(四)Servlet客户端Http请求
    JavaWeb 后端 <二> 之 Servlet 学习笔记
    Servlet 规范笔记—基于http协议的servlet
    Servlet 规范笔记—servlet概念及结构
    看懂UML类图和时序图
    hibernate中的事务管理是怎么概念?
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
  • 原文地址:https://www.cnblogs.com/6530265oule/p/9512580.html
Copyright © 2011-2022 走看看