zoukankan      html  css  js  c++  java
  • 创建单链表(创建头结点的方式,头插入法初始化赋值)

    //键盘输入若干个整数,按输入数据逆序建立一个带头结点的单链表(头插入创建单链表)
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct Link {
        int data;
        struct Link* next;
    }link;
    
    
    //头插入的方式初始化链表
    link* initLink(link* head_node) {
        head_node = (link*)malloc(sizeof(link)); //创建头结点
        head_node->data = 0; //头结点数据域初始化赋值为0
        head_node->next = NULL;
    
        link* ptail = head_node;
    
        //头插入赋值
        printf("输入若干个值逆序保存到链表中:
    ");
        int num = 0;
        while (num != -1) { //输入-1就结束
            scanf("%d", &num);
            link* new_node = (link*)malloc(sizeof(link)); //申请一个新节点
            new_node->data = num; //给新节点赋初值
            new_node->next = head_node; //新节点的指针域是最后一个结点
            head_node = new_node; //新节点成为最后一个结点(头结点,头结点在后面)
            ptail = new_node; //尾指针指向这个新节点,不断往前移动
        }
        printf("尾指针指向的值是:%d
    ", head_node->next->data);
        //return ptail; //将指向最后一个结点的尾指针返回
        return head_node;
    }
    
    
    //遍历链表(逆序建立,顺序遍历)
    void showLink(link* head_node) {
        link* tmp =head_node->next; //从头结点的下一个结点,即第一个结点开始遍历,避免输出结束标志-1
        while (tmp != NULL) {
            //if (tmp->data == -1) {
            //    break; //顺序遍历,结束标志 -1不输出不能这样控制,否则一个都输出不了
            //}
            printf("%d ", tmp->data);
            tmp = tmp->next;
        }
    }
    
    void main() {
        link* myHeadNode = NULL;
        myHeadNode = initLink(myHeadNode); //获取经过初始化的头结点
        printf("逆序建立的链表为:
    ");
        showLink(myHeadNode);
    }
    

    0是头结点中的值,可以不打印,遍历时遍历到 tmp->data ==0 ,退出遍历即可。

  • 相关阅读:
    struts2 + ajax(从后台获取json格式的数据返回到前端,然后前端用jquery对json数据进行解析)
    request 中文乱码问题
    Eclipse 支持jQuery 自动提示
    基于按annotation的hibernate主键生成策略
    微信创建菜单操作
    百度转换经纬度为地址
    微信工具类(常用接口)的整理
    微信URL有效性验证
    原型模式 (原型管理器)
    发送邮件 Email(java实现)
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/12697537.html
Copyright © 2011-2022 走看看