【第22期】观点:IT 行业加班,到底有没有价值?

创建链表并插入数据(有序)

原创 2016年08月28日 15:20:54
//
//  main.m
//  node
//
//  Created by tk on 16/8/28.
//  Copyright © 2016年 Company. All rights reserved.
//

#import <Foundation/Foundation.h>
#include <stdio.h>
#include <stdlib.h>

//定义结构体
struct node {
    int data;
    struct node *next;
};

/*链表*/
void nodeTest() {
    struct node  *head, *p, *q, *t;
    int i, n, a;

    //设置头指针为空
    head = NULL;
    //初试化当前指针
    q = NULL;
    //输入链表的数量
    scanf("%d", &n);
    //输入
    for (i = 0; i < n; i++) {
        scanf("%d", &a);
        //申请存储空间
        p = (struct node *)malloc(sizeof(struct node));
        p->data = a;
        p->next = NULL;
        if (head == NULL) {
            head = p;
        }else {
            q->next = p;
        }
        q = p;//指针q指向当前节点
        //至此,一个节点的数据就完成了
    }

    //输出链表
    t = head;
    while (t != NULL) {
        printf("%d ", t->data);
        t = t->next;//指向下一个节点
    }


    printf("读入需要插入的数据:");
    scanf("%d", &a);
    t = head;

    while (t != NULL) {
        if (t->next == NULL || t->next->data > a)
        {
            struct node *d = (struct node *)malloc(sizeof(struct node));
            d->data = a;
            d->next = t->next;
            t->next = d;
            break;
        }
        t = t->next;
    }

    t = head;
    while (t != NULL) {
        printf("%d ", t->data);
        t = t->next;
    }

    getchar();
    getchar();
    return;
}

int main(int argc, const char * argv[]) {

    nodeTest();
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

往有序链表的插入元素

在有序链表中插入元素时,最好设置两个指针,一前一后,后面指针负责比较大小,前面的指针负责插入操作。#include "stdafx.h" #include #include struct vNode...

单向循环链表的有序插入 对单向循环链表head插入元素 链表保持有序

#ifndef CYCLICLIST_H_ #define CYCLICLIST_H_ #include using namespace std; class CyclicList { pu...

向头指针为 L的有序单链表(从小到大有序)中插入一个结点,使插入后链表仍然有序

原题:有一个有序单链表(从小到大有序),表头指针为 L ,编写一个函数向该单链表中插入一个元素为 a 的结点,使插入后链表仍然有序。 说明:以下程序先自动生成一个从小到大有序链表,然后要求输入插入结点...

链表(篇1)循环有序链表中插入节点

在循环有序链表中插入一个新值。例如:插入7之后算法: 为新插入的节点分配内存,并将数据放在新分配的节点中。让指向新节点的指针是new_node。在内存分配之后,以下是需要处理的三种情况。1)链接为空...

实现一个 链表 有序插入新节点

简述: 用Java实现一个链表,每次插入后都会进行插入排序,找到合适的位置,维护有序性 注意: 在新加入节点newNode(E v)函数实现时, 1)要判断,pHead是否为空, 2...
  • anialy
  • anialy
  • 2012-11-08 00:52
  • 3687

数据结构——单链表的创建、逆置、插入、有序表的建立、有序单链表合并等基础操作!!

#include typedef int ElemType; typedef struct LNode{  ElemType data;  struct LNode *next; }LNode,*Li...

C语言实现有序单链表的插入

我们先来声明本文演示所用的链表的节点:

有序链表的归并

#include using namespace std; typedef struct LNode //定义单链表 { int data; struct LNode *nex...

有序插入建立链表 C语言实现

实现代码/*有序插入建立链表 C语言实现*/#include #include/*定义一个linklist结构体类型*/ typedef struct linklist { int data;...

向有序循环单向链表中插入节点

给定一个有序的循环单向链表和一个整数,要求将以该整数为值的新节点插入原链表中,新链表要求仍然有序。 class Node { public: Node(int v) ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)