link quiz

/*
 ============================================================================
 Name        : link_list(204).c
 Author      : Cly
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */


#include <stdio.h>
#include <stdlib.h>


//这里创建一个结构体用来表示链表的节点类型
struct Node {
int data;
struct Node *next;
};


int main(void) {
freopen("./in.txt", "r", stdin);
struct Node *head, *p, *q, *t;
int i, n, a;
scanf("%d", &n);
head = NULL; //头指针为空
for (i = 1; i <= n; ++i) {
scanf("%d", &a);
//动态申请一个空间,用来存放一个结点,并用临时指针p指向这个结点
p = (struct Node*) malloc(sizeof(struct Node));
p->data = a; //将数据存储到当前节结点的data域中
p->next = NULL; //当前节点的下一个结点为空
if (head == NULL)
head = p;   //如果这是第一个创建的结点,则将头指针指向它
else
q->next = p; //如果不是第一个结点,则将上一个的后继指针指向当前的结点
q = p;  //***记录当前节点的值(下一个的上一个结点指向)
}


scanf("%d", &a);         //读入待插入的数
t = head;                //从链表的头开始遍历
while (t != NULL) {      //当没有到达尾部前
if (t->next == NULL || t->next->data > a) { //如果当前结点是最后一个结点或者下一个结点的值大于待输入的插入数
p = (struct Node*) malloc(sizeof(struct Node));   //动态申请一个空间,用来存放结点
p->data = a;
p->next = t->next;
t->next = p;
break;  //插入完毕
}
t = t->next;  //继续下一个结点
}


//输出链表中的所有数
t = head;
while (t != NULL) {
printf("%d ", t->data);
t = t->next;
}


fclose(stdin);
return EXIT_SUCCESS;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值