#include
#include
#include
typedef int Elemtype;
//单链表
typedef struct LNode
{
Elemtype data;//存放数据
struct LNode *next; //指向LNode的一个指针
} LNode,*LinkList; //相当于取别名,LNode代表一个节点,LinkList代表整个单链表(指向LNode的一个指针)
void PrintList(LinkList L)
{
LinkList p;
p=L->next;//找到头指针指向节点,开始遍历
printf("链表元素如下:\n");
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
//头插法建立链表 (打印倒叙打印)
LinkList List_HeadInsert(LinkList L)
{
LNode *s;
int x;
L=(LinkList)malloc(sizeof(LNode));//创建头节点
L->next=NULL;
scanf("%d",&x);
while(x!=9999)
{
s=(LNode*)malloc(sizeof(LNode));//创建新节点
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
//尾插法
LinkList List_TailInsert(LinkList L)
{
int x;
L=(LinkList)malloc(sizeof(LNode));
LNode *r=L,*s;
scanf("%d",&x);
while(x!=9999)
{
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return L;
}
int main()
{
LinkList L1;//使用头插法 这里的L1就是一个头指针
L1=List_HeadInsert(L1); // 1 2 3 4
printf("使用头插法\n");
PrintList(L1);// 4 3 2 1
LinkList L2;
L2=List_TailInsert(L2);// 1 2 3 4
printf("使用尾插法\n");
PrintList(L2);// 1 2 3 4
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)