链表的创建 、头插法、尾插法

链表的创建 、头插法、尾插法

  1. linklist.c
#include<stdio.h>
#include<stdlib.h>
#include "linklist.h"

/*
	功能:
		创立一个有数据的链表
	返回值:
		头指针 保存链表第一个结点
*/
Node *create()
{
    Node *first = NULL;	//还未创建时,第一个结点和最后一个结点都为NULL
    Node *last = NULL;
    element x;
    printf("请输入一串完整的链表,输入0结束输入。\n");
    while(1)
    {
        scanf("%d",&x);
        if(x == 0)			//遇到0停止
        {
            break;
        }
        //分配内存空间
        Node *p = (Node *)malloc(sizeof(Node));
        //给新结点赋值
        p->next = NULL;
        p->data = NULL;
        //把结点放入链表,分情况讨论
        if(first == NULL) //第一个结点放入空链表
        {
            first = p;
            last = p;
        }
        else				//使用两种方法
        {
            #if 0		//表达式为真是执行if语句,为假时执行else语句
            p->next = first;		//头插法
            first = p;
            #else
            last->next = p;			//尾插法
            last = p;
            #endif
        }
    }
    return first;
}
/*
	功能:
		打印一个链表的所有元素的值
	参数:
		@first:
			头指针
*/
void printflink(Node *first)		//依次输出结点
{
    Node *p = first;
    printf("表中的值依次是:\n");
    while(p)
    {
        printf("%d",p->data);		//打印当前结点的数据
        p = p->next;				//让p指向下一个元素
    }
    printf("\n");
    free(p);
}
  1. linklist.h

    #ifndef __LINKLIST_H__
    #define __LINKLIST_H__
    #define element int;
    
    typedef struct node
    {
        element data;
        struct node *next;
    }Node;
    /*
    	功能:创建一个链表,输入0结束
    	返回值:头指针
    */
    Node *create();
    
    /*
    	功能:打印链表
    	参数:@first 头指针
    */
    void printfList(Node *first);
    #endif
    
    1. main.c

      #include<stdio.h>
      #include "linklist.h"
      
      int main()
      {
      	// 1、创建一个链表
      	Node *first = create();
      	// 2、打印链表值
      	printfList(first);
      	
      	return 0;
      }
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值