多文件编程实现链表创建,插入,输出(上)

发布于:2024-09-18 ⋅ 阅读:(9) ⋅ 点赞:(0)

linklist.c

#include "linklist.h"
//创建空的链表,为头结点在堆区分配空间
linklist_t *creat_empty_linklist()
{
	linklist_t *head = NULL;

	head = (linklist_t *) malloc(sizeof(linknode_t));

	if(NULL == head)
	{
		printf("malloc is fail!\n");
		return NULL;
	}

	memset(head,0,sizeof(linklist_t));
	//head->next = NULL;
	//head->data = 0;
	return head;
}
//头插法:每次都在头结点后插入数据
//特点:插入的顺序和输出的顺序是相反的

void insert_head_linklist(linklist_t *head,datatype_t data)
{
	//为结点在堆区申请空间
	linklist_t *temp = (linklist_t *)malloc(sizeof(linknode_t));
	if(NULL == temp)
	{
		printf("malloc is fail!\n");
		return ;
	}

 	//插入数据
 	temp->data = data;

	//连接结点
	temp->next = head->next;
	head->next = temp;
	return ;
}

//输出链表的内容
void print_data_linklist(linknode_t *head)
{
	linklist_t *p = head;
	while(p->next != NULL)
	{
		printf("%d ",p->next->data);
		p = p->next;
	}
	return ;
}

linklist.h

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef int dartatype_t;

typedef struct node
{
	datatype_t data;//数据域保存有效数据
	struct node *next;//指针域保存下一个结点的地址
}linknode_t;

extern void print_data_linklist(linknode_t *head);
extern void insert_head_linklist(linklist_t *head,datatype_t data);
extern linklist_t *creat_empty_linklist();

#endif

main.c

#include "linklist.h"

int main()
{
	linklist_t *head = NULL;
	datatype_t data;
	int n;
	head = creat_empty_linklist();
	
	printf("please input you want insert data number: ");
	scanf("%d",&n);
	printf("please input %d data : ",n);

	for(i = 0;i < n;i++)
	{
		scanf("%d",&data);
		insert_head_list(head,data);
	}
	print_data_linklist(head);
	retutn 0;
}

  运行上面的所有文件可以有下面结果:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到