-
单链表的定义
typedef struct LNode{
int data;
struct LNode *next; //定义一个指向结构体自身的指针,用来指向下一个节点
}LNode,*LinkList;
_____________________________________________
LNode *p = LinkList p; //两种定义指针的形式,侧重点不同,效果相同
-
头插法
LinkList Head_insert(LinkList L){
int x;
scanf("%d ",&x);
while(x!=-1){
LNode *s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
头插法可运行示例代码
#include"stdio.h"
#include"stdlib.h"
#define MaxSize 10
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList Head_insert(LinkList L){
int x;
scanf("%d ",&x);
while(x!=-1){
LNode *s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
int main(){
LinkList L = (LinkList)malloc(sizeof(LNode));
L->next=NULL;
L = Head_insert(L); // 调用头插法创建链表
// 输出链表
LNode *p = L->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
p=L->next;
while(p!=NULL){
LNode*q=p;
p=p->next;
free(q);
}
free(L);
}
-
尾插法
void wei_insert(LinkList L)
{
int x;
scanf("%d",&x);
LNode*r=L;
while(x!=-1){
LNode*s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
}
尾插法可运行示例代码
#include"stdio.h"
#include"stdlib.h"
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void wei_insert(LinkList L)
{
int x;
scanf("%d",&x);
LNode*r=L;
while(x!=-1){
LNode*s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
}
int main()
{
LinkList L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
wei_insert(L);
LNode*p=L->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
while(p!=NULL){
LNode*q=p;
p=p->next;
free(q);
}
free(L);
}
创建了一个408交流群,旨在大家一起学习进步,上岸理想院校,感兴趣的小伙伴速度进群学习吧
标签:单链,LNode,int,next,LinkList,NULL,data,基本概念 From: https://blog.csdn.net/m0_74181956/article/details/142962563