您的位置:首页 > 产品设计 > UI/UE

link quiz

2016-05-01 14:33 399 查看
/*

 ============================================================================

 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  link