单链表头插法和尾插法建表-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;
}





阅读更多
换一批

没有更多推荐了,返回首页