赞
踩
- LinkList Link_TailInsert(LinkList L)
- {
- L = (LNode*)malloc(sizeof(LNode)); //申请头结点,此处头结点的next不赋值为空
- if (L == NULL) //判断内存申请是否成功
- {
- return L;
- }
- LNode* s,*r; //两个指针指向头结点
- s = r = L;
- int x;
- scanf("%d",&x); //输入数据
- while (x != 9999) //结束判断条件
- {
- r = (LNode*)malloc(sizeof(LNode));//申请一个新节点,用p指针指向它
- r->data = x; //新节点数据
- s->next = r; //新节点连接在前一个结点之后
- s = r; //s指向新的表尾节点
- scanf("%d",&x);
- }
- s->next = NULL;
- return L;
- }
- LinkList Link_HeadInsert(LinkList L)
- {
- L = (LNode*)malloc(sizeof(LNode)); //初始化头结点
- if (L == NULL) //判断内存申请是否成功
- {
- return L;
- }
- L->next = NULL; //头结点的下一个节点赋值为空,防止其成为野指针
- int x;
- scanf("%d",&x); //输入数据
- while (x != 9999) //结束判断条件
- {
- LNode* p = (LNode*)malloc(sizeof(LNode)); //申请一个新节点,用p指针指向它
- p->data = x; //新节点赋值
- p->next = L->next; //新节点连接在头结点之后
- L->next = p;
- scanf("%d",&x);
- }
- return L;
- }
尾(头)插法建立的单链表用头(尾)插法建立一遍就完成了单链表的逆序
- #include <stdio.h>
- #include<stdlib.h>
- typedef struct LNode
- {
- int data;
- struct LNode* next;
- }LNode,*LinkList;
- //头插法
- LinkList Link_HeadInsert(LinkList L)
- {
- if (L == NULL) //判断内存申请是否成功
- {
- return L;
- }
- L->next = NULL; //头结点的下一个节点赋值为空,防止其成为野指针
- int x;
- scanf("%d",&x); //输入数据
- while (x != 9999) //结束判断条件
- {
- LNode* p = (LNode*)malloc(sizeof(LNode)); //申请一个新节点,用p指针指向它
- p->data = x; //新节点赋值
- p->next = L->next; //新节点连接在头结点之后
- L->next = p;
- scanf("%d",&x);
- }
- return L;
- }
- //尾插法
- LinkList Link_TailInsert(LinkList L)
- {
- if (L == NULL) //判断内存申请是否成功
- {
- return L;
- }
- LNode* s,*r; //两个指针指向头结点
- s = r = L;
- int x;
- scanf("%d",&x); //输入数据
- while (x != 9999) //结束判断条件
- {
- r = (LNode*)malloc(sizeof(LNode));//申请一个新节点,用p指针指向它
- r->data = x; //新节点数据
- s->next = r; //新节点连接在前一个结点之后
- s = r; //s指向新的表尾节点
- scanf("%d",&x);
- }
- s->next = NULL;
- return L;
- }
- //输出
- void Link_Print(LinkList L)
- {
- LNode* P;
- P = L->next; //指针指向头结点之后
- while (P) //指针不为空则输出其data
- {
- printf("%d ",P->data);
- P = P->next;
- }
- printf("NULL\n");
- }
- int main()
- {
- LinkList L;
- L = (LNode*)malloc(sizeof(LNode)); //在内存中申请一个空间,初始化头结点
- Link_HeadInsert(L); //头插法
- printf("头插法输出:");
- Link_Print(L); //输出单链表
- L = (LNode*)malloc(sizeof(LNode)); //在内存中申请一个空间,初始化头结点
- Link_TailInsert(L); //尾插法
- printf("尾插法输出:");
- Link_Print(L); //输出单链表
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。