C语言学习历程——编程练习3——04
2017-05-04 12:24
281 查看
4. 程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。
分析:创建节点的同时将数据写入节点
下面是代码实现:
/**********************************************************************************************
程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。
**********************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
struct node
{
int num;
struct node *next;
};
typedef struct node Node;
typedef struct node *Link;
void CreatLink(Link *head)
{
*head = NULL;
}
void IsMallocOk(Link new_node)
{
if (new_node == NULL)
{
printf ("No enough memory to allocate!\n");
exit(-1);
}
}
void CreatNewnode(Link *new_node)
{
*new_node = (Link)malloc(sizeof(Node));
IsMallocOk(*new_node);
}
void InsertNodeTail(Link *head, Link new_node)
{
Link temp;
temp = *head;
if (*head == NULL)
{
new_node -> next = *head;
//若原链表为空表,那么新建节点置为头节点
*head = new_node;
}
else
{
while (temp -> next != NULL)
{
temp = temp -
4000
> next;
//若原链表为非空,那么移动temp直到指向表尾
}
temp -> next = new_node;
new_node -> next = NULL;
//让末节点的指针域指向新建节点
}
}
void DisplayNode(Link head) //打印链表节点
{
Link temp;
temp = head;
while (temp != NULL)
{
printf ("%d ", temp -> num);
temp = temp -> next;
}
printf ("\n");
}
int main()
{
int Arr[] = {1,3,2,16,5,4,65,36,7,10};
//初始化一个数组
Link head = NULL;
Link new_node = NULL;
int i = 0;
CreatLink(&head);
//创建一个头节点
for (i = 0; i < 10; i++)
{
CreatNewnode(&new_node);
//创建新的节点
new_node -> num = Arr[i];
//将数组的数据写入节点
InsertNodeTail(&head, new_node);
}
DisplayNode(head);
return 0;
}
分析:创建节点的同时将数据写入节点
下面是代码实现:
/**********************************************************************************************
程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。
**********************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
struct node
{
int num;
struct node *next;
};
typedef struct node Node;
typedef struct node *Link;
void CreatLink(Link *head)
{
*head = NULL;
}
void IsMallocOk(Link new_node)
{
if (new_node == NULL)
{
printf ("No enough memory to allocate!\n");
exit(-1);
}
}
void CreatNewnode(Link *new_node)
{
*new_node = (Link)malloc(sizeof(Node));
IsMallocOk(*new_node);
}
void InsertNodeTail(Link *head, Link new_node)
{
Link temp;
temp = *head;
if (*head == NULL)
{
new_node -> next = *head;
//若原链表为空表,那么新建节点置为头节点
*head = new_node;
}
else
{
while (temp -> next != NULL)
{
temp = temp -
4000
> next;
//若原链表为非空,那么移动temp直到指向表尾
}
temp -> next = new_node;
new_node -> next = NULL;
//让末节点的指针域指向新建节点
}
}
void DisplayNode(Link head) //打印链表节点
{
Link temp;
temp = head;
while (temp != NULL)
{
printf ("%d ", temp -> num);
temp = temp -> next;
}
printf ("\n");
}
int main()
{
int Arr[] = {1,3,2,16,5,4,65,36,7,10};
//初始化一个数组
Link head = NULL;
Link new_node = NULL;
int i = 0;
CreatLink(&head);
//创建一个头节点
for (i = 0; i < 10; i++)
{
CreatNewnode(&new_node);
//创建新的节点
new_node -> num = Arr[i];
//将数组的数据写入节点
InsertNodeTail(&head, new_node);
}
DisplayNode(head);
return 0;
}
相关文章推荐
- C语言学习历程——编程练习2——04
- C语言学习历程——编程练习2——10
- C 语言学习第三课习题编程练习
- C语言学习历程——编程练习2——06
- C语言学习历程——编程练习2——08
- C语言学习历程——编程练习3——02
- C语言学习历程——编程练习2——02
- C语言学习历程——编程练习2——09
- C语言学习历程——编程练习3——03
- C语言学习历程——编程练习2——07
- C语言学习历程——编程练习2——03
- C++ Primer Plus 学习笔记 第四章 04编程练习
- C语言学习历程——编程练习3——01
- 编程(开发)语言学习指导
- go语言学习笔记之并发编程
- 学习编程是不断练习的过程!!!!!
- java语言学习连载(一)--Java语言编程基础
- 初学编程该怎么学?——对初学者程序设计语言学习的思考1
- 初学编程该怎么学?——对初学者程序设计语言学习的思考(2)
- C++学习笔记: 混合语言编程