单链表的创建:头插法
#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>typedef int ElemType;
/*定义一个单链表*/
typedef struct LNode{ElemType data;/*下一个元素的地址指针*/struct LNode *next;
} LNode,*LinkList;/***单链表的创建* @return*/
LinkList CreateListByHead(LinkList L){/*中间指针 */LNode *s;/*存入的元素*/int x;/*创建头节点:申请空间*/L=(LinkList) malloc(sizeof (LNode));/*对头结点进行初始化:*/L->next=NULL;/*读取传入的元素*/scanf("&d",&x);while (x !=999){/*创建新的节点*/s = (LinkList) malloc(sizeof(LNode));s->data=x;/*中间指针存储的地址为:头指针的地址*/s->next = L->next;/*重新设置 头结点存储的指针:为插入元素的地址*/L->next=s;scanf("%d",&x);}/*返回头节点*/return L;
}int main()
{LinkList L;CreateListByHead(L);return 0;
}
![](https://img2024.cnblogs.com/blog/2111999/202406/2111999-20240630001321537-1933357029.png)
单链表的创建:尾插法
#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>typedef int ElemType;
/*定义一个单链表*/
typedef struct LNode{ElemType data;/*下一个元素的地址指针*/struct LNode *next;
} LNode,*LinkList;/***单链表的创建: 使用尾插法* @return*/
LinkList CreateListByTail(LinkList L){/*中间指针 */LNode *s;/*存入的元素*/int x;/*创建头结点:申请空间*/L=(LinkList) malloc(sizeof (LNode));L->next=NULL;//初始化:只有一个头结点=尾节点LNode *r=L;/*读取传入的元素*/scanf("&d",&x);while (x !=999){/*创建新的节点*/s = (LinkList) malloc(sizeof(LNode));s->data=x;/*更新当前r指针上的元素 存储的下一个地址指针*/r->next=s;/*更新尾节点的元素地址:为新插入的元素地址*/r=s;scanf("%d",&x);}/*插入完成:尾巴置空*/r->next=NULL;/*返回头结点*/return L;}int main()
{LinkList L;CreateListByTail(L);return 0;
}
![](https://img2024.cnblogs.com/blog/2111999/202406/2111999-20240630001334828-615661711.png)