程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。

来源:互联网 发布:淘宝卖家信息采集软件 编辑:程序博客网 时间:2024/04/30 11:33


#include <stdio.h>
#include <stdlib.h>   // malloc 函数的头文件
#include <string.h>    // strlen 函数的头文件

struct node                     
{
        char c;
        struct node * next;             // 指向链表的下一个结构
};
/* 结构类型重命名 */
typedef struct node Node;
typedef struct node * Link;
/* 创建头节点  */(PS:我是这样认为的)
void create_head(Link *head)
{
        *head = (Link)malloc(sizeof(Node));

}
/*  创建节点,并未它分配空间,和判断是否分配成功  */
void create_node_tail(Link *new_node)
{
        *new_node = (Link)malloc(sizeof(Node));

        if( *new_node == NULL )
        {
                printf("空间分配失败!\n");
                exit(-1);
        }
}
/* 将节点尾插插入链表 */
void inset_node(Link *head,Link new_node)
{
        Link p = *head;

        while( (p->next) != NULL )
        {
                p = p->next;
        }
        p->next = new_node;
        new_node->next = NULL;
}
 /* 打印显示链表内容 */

void display(Link head)
{
        Link p = NULL;


        p = head;


        while(p != NULL)
        {
                printf("%c",p->c);
                p = p->next;
        }

        printf("\n");
}

/* 将数组的元素存储于节点  */
void fun(Link new_node,char s)
{
        char p = s;

        new_node->c = p ;

}


int main()
{
        Link head = NULL;
        Link new_node= NULL;

        char str[20] = "link node!";


        int i , len ;

        len = strlen(str);

        create_head(&head);

        for(i = 0 ; i < len ; i++ )
        {
             create_node_tail(&new_node);

             fun(new_node,str[i]);

             inset_node(&head,new_node);
        }

        display(head);

    return 0;
}

程序运行结果:

link node!


0 0
原创粉丝点击