新建链表指针结构体
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode* next;//指向下一个结点
}LNode,*LinkList;//结构体名
LNode==* LinkList;LNode * ==LinkList
头插法新建链表
先建立一个头结点:
L = (LinkList)malloc(sizeof(LNode));//带头结点的链表
L->next = NULL;
malloc格式:变量名=(该变量名的数据类型)malloc(分配空间)
接着新建一个结点:
LNode* s;//结点指针
int x//结点存储的数据;
输入一个新链表:
scanf("%d", &x);//读取数据
插入链表的第一个数据
while (x != -1) // -1标志输入结束
{
s = (LNode*)malloc(sizeof(LNode));//每次都重新对s初始化,强制类型转换
s->data = x;//把读取到的值,给新空间中的 data 成员
s->next = L->next;//让新结点的 next 指向链表的第一个元素 第一个放我们数据的元素
L->next = s;// s 作为第一个元素
scanf("%d", &x);//从标准输人读取数据
}
头插法完整代码
//头插法新建链表
LinkList list_head_insert(LinkList& L)
{
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;//L->data 里边没放东西
LNode* s;
int x;
scanf("%d", &x);//读取数据
while (x != -1)//-1标志输入结束
{
s = (LNode*)malloc(sizeof(LNode));//申请一个新空间给 s,强制类型转换
s->data = x;//把读取到的值,给新空间中的 data 成员
s->next = L->next;//让新结点的 next 指指向链表的第一个元素 第一个放我们数据的元素
L->next = s;//t s 作为第一个元素
scanf("%d", &x);//从标准输人读取数据
}
return L;
}
所有代码
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode* next;//指向下一个结点
}LNode,*LinkList;//结构体名 LNode==*LinkList;LNode*==LinkList
//头插法新建链表
LinkList list_head_insert(LinkList& L)
{
L = (LinkList)malloc(sizeof(LNode));//带头结点的链表 malloc格式:变量名=(该变量名的数据类型)malloc(分配空间)
L->next = NULL;//L->data 里边没放东西
LNode* s;
int x;
//1 2 3 4 5 6 7 -1
scanf("%d", &x);//从标准输人读取数据
while (x != -1)
{
s = (LNode*)malloc(sizeof(LNode));//申请一个新空间给 s,强制类型转换
s->data = x;//把读取到的值,给新空间中的 data 成员
s->next = L->next;//让新结点的 next 指指向链表的第一个元素 第一个放我们数据的元素
L->next = s;//t s 作为第一个元素
scanf("%d", &x);//从标准输人读取数据
}
return L;
}
//打印链表中每个结点的值
void print_list(LinkList L)
{
L = L->next;
while (L != NULL)//NULL 是为了代表一张空的藏宝图
{
printf("%3d", L->data);//印当前结点数据
L = L->next;//指向下一个结点
}
printf("\n");
}
int main()
{
LinkList L,l;//链表义,是结构体指针类型
list_head_insert(L);//输人数据可以为3456 79999,插法新建链表
print_list(L);//链表印
return 0;
}
标签:插法,结点,LNode,新建,next,链表,data,LinkList
From: https://www.cnblogs.com/gqy9521/p/18175311