/*
============================================================================
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;
}
============================================================================
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;
}