#include <stdio.h>
#include <stdlib.h>
//头插法新建链表
typedef int ElemType;
typedef struct Lnode
{
ElemType data;// int型数据域
struct Lnode *next;
}LNode,*LinkLIst;
//Lnode* 是结构体指针,和LinkLIst完全等价的。
void list_head_insert(LNode* &L)
{
L=(LinkLIst)malloc(sizeof(LNode));//申请头节点空间,头指针指向头节点
L->next=NULL;
ElemType x;
scanf("%d",&x);
LNode *s; //用来指向申请的新节点
while(x!=9999)
{
s=(LinkLIst)malloc(sizeof(LNode));//先申请空间避免9999也被输入进来
s->data=x;
s->next=L->next; //s的next指向原本链表的第一个节点
L->next=s;
scanf("%d",&x);
}
}
//-------尾插法----------
void list_tail_insert(LNode* &L)
{
L=(LinkLIst)malloc(sizeof(LNode));//申请头节点空间,头指针指向头节点
L->next=NULL;
ElemType x;
scanf("%d",&x);
LNode *s,*r=L; //s用来指向申请的新节点 r是始终指向链表尾部
while(x!=9999)
{
s=(LinkLIst)malloc(sizeof(LNode));//为新节点申请头节点空间,头指针指向头节点
s->data=x;
r->next=s;
r=s;//r要指向新的尾部
scanf("%d",&x);
}
r->next=NULL;//尾节点的next为NULL
}
//------链表打印-----------
void print_list(LinkLIst L) //只读不改动 不需要C++引用
{
L=L->next;
while(L!=NULL)
{
printf("%3d",L->data);
L = L->next;
}
printf("\n");
}
//尾插法新建链表
int main() {
LinkLIst L;//L是链表头指针,是结构体指针类型
// list_head_insert(L);
list_tail_insert(L);
print_list(L);
return 0;
}
尾插法新建链表
最新推荐文章于 2024-06-14 14:44:45 发布