赞
踩
0.建立单链表前的工作
- #include<stdio.h>
- #include<stdlib.h>
- //定义结构体
- typedef int Elemtype;
- typedef struct LNode{
- Elemtype data; //单链表结点中的数据域,用来存放数据
- LNode *next; //单链表结点中的指针域,用来存放下一个结点的地址
- }LNode,*Linklist;
1.头插法建立单链表
- Linklist Create_head(Linklist &L){
- LNode *s; //定义s指针
- int x; //用来保存数据
- L=(LNode*)malloc(sizeof(LNode)); //向内存申请开辟一个LNode类型大小的内存空间,L作为头结点
- L->next=NULL; //将头指针的next置空
- scanf("%d",&x);
- while(x!=999){ //若输入为999则结束输入
- s=(Linklist)malloc(sizeof(LNode)); //向内存申请为s开辟一个LNode类型大小的内存空间
- s->data=x; //将x的值赋值给s结点的数据域data
- s->next=L->next; //s结点指向头结点的下一个结点
- L->next=s; //再将头结点指向s结点
- scanf("%d",&x); //再次输入数据
- }
- return L; //返回L的地址
- }
主函数调用
- int main(){
- Linklist L; //定义一个LNode类型的变量L
- Create_head(L); //头插法创建单链表
- printlist(L); //打印输出
- return 0;
- }
运行示例
2.尾插法建立单链表
- //尾插法建立单链表
- Linklist Create_tail(Linklist& L) {
- int x;
- L = (Linklist)malloc(sizeof(LNode));
- LNode*s,*r=L; //与头插法不同的是需要定义一个尾指针r,r始终指向单链表中最后一个结点
- scanf("%d",&x);
- while (x!=999)
- {
- s = (LNode*)malloc(sizeof(LNode));
- s->data = x;
- r->next=s; //当前的尾结点指向s
- r = s; //将s的值传给r,目的是将s作为当前的尾结点
- scanf("%d", &x);
- }
- r->next = NULL; //插入完成后将r->next置空
- return L;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
主函数调用
- int main(){
- Linklist L; //定义一个LNode类型的变量L
- Create_tail(L); //尾插法创建单链表
- printlist(L); //打印输出
- return 0;
- }
运行示例
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。