C语言头插入法创建链表

#include<stdio.h>
#include<math.h>
// #define 定义一个标识符来表示一个常量
#define  OK   1
#define  ERROR   -1
#define  MAX_SIZE  100
//  typedef 关键字来定义自己习惯的数据类型名称
typedef  int  Status ;
typedef  int  ElemType ; 
// struct 结构体
typedef  struct  Lnode{
    
       
    ElemType  data;     /*数据域,保存结点的值 */
    struct   Lnode  *next;      /*指针域*/
} LNode;        /*结点的类型 */

LNode  *create_LinkList(void)
    /*  头插入法创建单链表,链表的头结点head作为返回值  */  
{
    
        
    int data ;
    LNode *head, *p;
    // 分配一个动态空间
    head= (LNode  *) malloc( sizeof(LNode));
    head->next=NULL;       /*  创建链表的表头结点head  */ 
    while (1) {
    
       
    	// 输入一个数,存为data
        scanf("%d", &data);
        // 如果data == 32767 循环结束,跳出循环
        if (data==32767)  
            break ;
        // 分配动态空间
        p = (LNode  *)malloc(sizeof(LNode));
        p->data= data;     /*  数据域赋值  */
        // 让他的指针域为null ,head指向p。第二次循环p指向的是第一个p,而head再次指向第二个p。
        p->next=head->next ;  head->next=p ; 
            /*  钩链,新创建的结点总是作为第一个结点*/
    }
    return (head);
}

猜你喜欢

转载自blog.csdn.net/weixin_46073538/article/details/114261075