/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
struct node //定义结构体,作为链表中的节点
{
char c;
struct node * next;
{
char c;
struct node * next;
};
typedef struct node Node; //为了在之后程序中的简洁性,重定义类型名
typedef struct node * Link;
typedef struct node * Link;
void create_link(Link *head) //创造头节点
{
*head = NULL;
}
{
*head = NULL;
}
void is_malloc_ok(Link newnode) //判断动态分配空间是否完成
{
if(newnode == NULL) //malloc函数在成功分配动态存储空间之后会返回地址值
{
printf("malloc error!\n");
exit(-1);
}
}
{
if(newnode == NULL) //malloc函数在成功分配动态存储空间之后会返回地址值
{
printf("malloc error!\n");
exit(-1);
}
}
void create_newnode(Link *newnode) //创造新节点
{
*newnode = (Link)malloc(sizeof(Node));
is_malloc_ok(*newnode);
}
{
*newnode = (Link)malloc(sizeof(Node));
is_malloc_ok(*newnode);
}
void insert_node_head(Link *head,Link newnode) //将新节点从头节点插入链表
{
newnode->next = *head;
*head = newnode;
}
{
newnode->next = *head;
*head = newnode;
}
void insert_node_tail(Link *head,Link newnode) //将新节点从尾节点插入链表
{
Link temp;
temp = *head;
if(temp == NULL) //对链表是否为空进行判断,如果是空链表,头节点和尾节点相同
{
newnode->next = *head;
*head = newnode;
}
else //如果不是尾节点,就遍历到尾节点的前一个节点,开始插入节点
{
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = newnode;
newnode->next = NULL;
}
}
{
Link temp;
temp = *head;
if(temp == NULL) //对链表是否为空进行判断,如果是空链表,头节点和尾节点相同
{
newnode->next = *head;
*head = newnode;
}
else //如果不是尾节点,就遍历到尾节点的前一个节点,开始插入节点
{
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = newnode;
newnode->next = NULL;
}
}
void display_node(Link head) //遍历链表并且输出每个节点的值
{
Link temp;
temp = head;
while(temp != NULL)
{
printf("%c",temp->c);
temp = temp->next;
}
printf("\n");
}
{
Link temp;
temp = head;
while(temp != NULL)
{
printf("%c",temp->c);
temp = temp->next;
}
printf("\n");
}
int main()
{
Link head = NULL; //定义头指针
Link newnode = NULL; //定义新节点
char s[10] = {"abcdefghij"};
int i;
{
Link head = NULL; //定义头指针
Link newnode = NULL; //定义新节点
char s[10] = {"abcdefghij"};
int i;
create_link(&head); //调用函数创建新的链表
for(i = 0;i < 10;i++)
{
create_newnode(&newnode); //创建新的节点并且判断是否成功创建节点
newnode->c = s[i]; //将数组里面的值赋值给新节点的char类型变量
// insert_node_head(&head,newnode); //从头节点插入
insert_node_tail(&head,newnode); //从尾节点插入
}
{
create_newnode(&newnode); //创建新的节点并且判断是否成功创建节点
newnode->c = s[i]; //将数组里面的值赋值给新节点的char类型变量
// insert_node_head(&head,newnode); //从头节点插入
insert_node_tail(&head,newnode); //从尾节点插入
}
display_node(head); //输出整个链表每个节点的值
return 0;
}
}