单链表头插法和尾插法建表-C语言实现


#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define FALSE 0
#define ERROR 0
#define TRUE 1
typedef int ElemType;
typedef int Status;
typedef struct Node
{
ElemType Data;
struct Node *next;
}List;
//输出链表//
void ShowList(List *Ptrl)
{
//p指针指向该结点
List *p= Ptrl;
//从该结点开始输出数据域
p=p->next;
while(p)
{
printf("%d ",p->Data);
p=p->next;
}
printf("\n");
}
//单链表头插法
List* Insert_Head(List *Ptrl)
{
//头指针指向头结点
List *p=Ptrl;
List *s;
int i;
p=(List*)malloc(sizeof(List));
p->next=NULL;
printf("请输入数据,以1000结束\n");
scanf("%d",&i);
while(i!=1000)
{
//分配空间
s=(List*)malloc(sizeof(List));
//赋值,链接
s->Data = i;
s->next = p->next;
p->next = s;
scanf("%d",&i);
}
return p;
}
//单链表尾插法
List* Insert_Tail(List *Ptrl)
{
List *p=Ptrl;
//尾指针
List *r;
//当前指
List *s;
int i;
p=(List*)malloc(sizeof(List));
p->next=NULL;
r=p;
    printf("请输入数据,以1000结束\n");
scanf("%d",&i);
while(i!=1000)
{
s=(List*)malloc(sizeof(List));
s->Data=i;
s->next=NULL;
//链接在尾指针后
r->next=s;
//尾指针后移
r=s;
scanf("%d",&i);
}
return p;
}




int main()
{
List *L;
L=(List*)malloc(sizeof(List));
//L=Insert_Head(L);
L=Insert_Tail(L);
ShowList(L);
free(L);
return 0;
}





  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值