尾插法建立单链表
LinkList List_TailInsert(LinkList &L)
{
int x;
L=(LinkList)malloc(sizeof(LNode));
LNode *s,*r=L;//s为要插入的新节点的指针,r为尾指针
scanf("%d",&x);
while(x!=99)//当输入99时代表链表构建完成
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d,&x");
}
r->next=NULL;
return L;
}
头插法建立单链表
LinkList List_HeadInsert(LinkList &L)
{
LNode *s;
int x;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
scanf("%d",&x);
while(x!=99)
{
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>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList List_TailInsert(LinkList &L)
{
int x;
L=(LinkList)malloc(sizeof(LNode));
LNode *s,*r=L;//s为要插入的新节点的指针,r为尾指针
scanf("%d",&x);
while(x!=99)//当输入99时代表链表构建完成
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d,&x");
}
r->next=NULL;
return L;
}
LinkList List_HeadInsert(LinkList &L)
{
LNode *s;
int x;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
scanf("%d",&x);
while(x!=99)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
void TraverseList(LinkList L)//遍历链表
{
LNode* p=L->next;
while(NULL!=p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
return;
}
int main()
{
LinkList L=NULL;
List_HeadInsert(L);
//List_TailInsert(L);
TraverseList(L);
}
头插遍历结果
![头插遍历结果](https://img-blog.csdnimg.cn/20200925191659759.png#pic_center)
尾插遍历结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200925191841692.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MTQzNjg3,size_16,color_FFFFFF,t_70#pic_center)
用头插法和尾插法建立单链表(带头结点)
最新推荐文章于 2024-06-25 07:11:52 发布