单链表的建立与输出
来源:互联网 发布:ps4数据库损坏 编辑:程序博客网 时间:2024/06/05 03:13
单链表可以用头插法建立,也可以用尾插法建立。然而头插法虽然操作简单一点,顺序却与输入顺序相反,尾插法虽然操作复杂一点,但是顺序却与输入顺序一致,所以建议使用尾插法。
一、头插法建立链表
1、不用函数
代码:
#include<stdio.h>#include <malloc.h>typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针int main(void){ Linklist L1=NULL;//建立链表l Node *p; for(int i=1; i<=10; i++)//头插法建立链表 { p=(Linklist)malloc(sizeof(Node)); p->data=i; p->next=L1; L1=p; } while(L1) { printf("%d ",L1->data); L1=L1->next;; } printf("\n"); return 0;}
2、用函数
代码:
#include<stdio.h>#include <malloc.h>typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_front(int n);//头插法建立链表void ShowList(Linklist L);//输出链表内容int main(void){ Linklist L1; int n; scanf("%d",&n); L1=CreateList_front(n); ShowList(L1); return 0;}Linklist CreateList_front(int n){ Linklist head=NULL; Node *p; int x; for(int i=0; i<n; i++)//头插法建立链表 { p=(Linklist)malloc(sizeof(Node)); scanf("%d",&x); p->data=x; p->next=head; head=p; } return head;}void ShowList(Linklist L)//输出链表内容{ while(L) { printf("%d ",L->data); L=L->next; } printf("\n");}
1、不用函数
代码:
#include<stdio.h>#include <malloc.h>typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针int main(void){ Linklist L1;//建立链表l Node *p,*x; L1=(Linklist)malloc(sizeof(Node)); p=L1;//将p指向头结点 for(int i=1; i<=10; i++)//尾插法建立链表 { x=(Linklist)malloc(sizeof(Node)); x->data=i; p->next=x; p=x; } p->next=NULL;//将最后一个节点的指针域置为空 L1=L1->next;//因为头结点为空,所以指向下一个节点这样才有数据域 while(L1) { printf("%d ",L1->data); L1=L1->next;; } printf("\n"); return 0;}
2、用函数
代码:
#include<stdio.h>#include <malloc.h>typedef struct linknode{ int data; linknode *next;} Node,*Linklist;//Linklist表示结构体指针Linklist CreateList_end(int n);//尾插法建立链表void ShowList(Linklist L);//输出链表内容int main(void){ Linklist L1; int n; scanf("%d",&n); L1=CreateList_end(n); ShowList(L1); return 0;}Linklist CreateList_end(int n){ Linklist head=(Linklist)malloc(sizeof(Node)); Node *p,*e; p=head; int x; for(int i=0; i<n; i++)//尾插法建立链表 { e=(Linklist)malloc(sizeof(Node)); scanf("%d",&x); e->data=x; p->next=e; p=e; } p->next=NULL;//将链表的最后一个节点的指针域置空 head=head->next;//因为头结点为空,所以所以指向下一个节点这样才有数据域 return head;}void ShowList(Linklist L)//输出链表内容{ while(L) { printf("%d ",L->data); L=L->next; } printf("\n");}
阅读全文
1 0
- 单链表的建立与输出
- 单链表的建立与输出
- 简单的链表建立与输出
- 双向链表的建立与输出
- 单链表的建立、输出、倒置旋转
- 单链表的动态建立和逆序输出
- 建立与输出一元多项式
- 【数据结构】循环链表的建立与输出
- C语音动态链表的建立与输出
- C语言中的 单链表建立、测长与输出检测
- 双链表的尾插法建立输出
- 单链表的基本操作(建立,输出及排序)
- 二叉树的建立与输出以及其他一些相关操作(递归算法实现) C语言
- 二叉树的建立与先序,后序,中序输出
- 二叉树的建立(先序输入)与遍历输出模板
- 单链表的创建与输出
- 数据链的建立和数据链的输出
- 单链表的建立与就地逆置
- 2017.05.18回顾
- Kotlin中的var和val
- iOS 响应者链,事件的传递
- 数据库dos命令及SQL语句的分类
- ActiveMQ中设计账号和密码
- 单链表的建立与输出
- .ko模块的加载和卸载
- 20170516@Map集合Entry对象
- 刷题中读写文件和手动输入的来回切换
- C++----语句
- 多线程死锁及解决办法
- 求二叉树的结点总数
- 验证输入的金额是否正确
- JSTL中fmt标签详解