c语言之单链表
来源:互联网 发布:车载手机支架推荐知乎 编辑:程序博客网 时间:2024/04/29 19:25
1.什么是链式存储结构
线性表的链式存储结构称为链表。在链表的存储中,每个结点不仅包含所存元素本身的信息,还包含元素之间逻辑关系的信息,即前驱结点包含后继结点的地址信息,这样就可以通过前驱结点中的地址信息方便地找到后继结点的位置。
2.链式存储的特点
(1)链表不支持随机访问。
(2)链表的结点的存储空间利用率较之顺序表稍低一些。
(3)链表支持存储空间的动态分配。
(4)在链表中进行插入操作无需移动元素。
3.单链表结构
typedef struct Node{int data;struct Node *next;}Node;
4.单链表实现增删查
头插法图:
实现:
#include<stdio.h>#include<stdlib.h>typedef struct Node{int data;struct Node *next;}Node;//头插法创建链表Node *createListByHead(Node *A){int length,i,x;Node *p,*s;A=(Node *)malloc(sizeof(Node));if(A ==NULL){printf("ERROR");exit(0);}A->next=NULL;p=A;scanf("%d", &length);for(i=0;i<length;i++){scanf("%d", &x);s=(Node *)malloc(sizeof(Node));if(s ==NULL){printf("ERROR");exit(0);}s->data=x;s->next=p->next;p->next=s;}return A;}//尾插法创建链表Node *createListByTail(Node *B){int length,i,x;Node *p,*q;B=(Node *)malloc(sizeof(Node));if(B==NULL){printf("ERROR");}B->next=NULL;p=B;scanf("%d",&length);for(i=0;i<length;i++){scanf("%d",&x);q=(Node *)malloc(sizeof(Node));q->data=x;p->next=q;p=p->next;}p->next=NULL;return B;}//查询输入值是否在链表中int findVal(Node *C,int x){Node *p=C->next;while(p !=NULL){if(p->data==x){return 1;}p=p->next;}return 0;}//删除单链表结点int deleteList(Node *A,int x){Node *p=A;Node *q;if(findVal(A,x)==0){return 0;}while(p !=NULL){if(p->next->data==x){q=p->next;p->next=q->next;free(q);return 1;}p=p->next;}return 0;}//打印链表所有值void printList(Node *A){Node *p=A->next;printf("打印链表结果:\n");while(p !=NULL){printf("%d ",p->data);p=p->next;}printf("\n");}void main(){Node *A,*B;int x;//B=createListByHead(A);B=createListByTail(A);printList(B);printf("删除值:\n");scanf("%d",&x);deleteList(B,x);printList(B);//printf("%d",findVal(B,x));}
结果:
0 0
- c语言之单链表
- c语言之单链表
- c语言之单链表
- c语言之建立单链表
- c语言数据结构之单链表
- C语言之单链表操作之查找
- C语言之单链表操作之插入
- 数据结构之单链表C语言实现
- 数据结构C语言之单链表简单实现
- 数据结构C语言实现之单链表
- 数据结构c语言实现之单链表
- 数据结构c语言实现之静态单链表
- 数据结构之---c语言实现单链表
- c语言 之 单链表 的 基本操作
- C语言--单链表之调用输出函数
- 【数据结构之C语言实现】单链表
- C语言之单链表应用举例
- C语言数据结构之单链表的拆分
- git使用
- C#:WPF的启动函数和启动入口
- Android:Activity 与 Fragment 通信 (99%) 完美解决方案
- 【TCP连接状态详解】
- abstract class和interface有什么区别
- c语言之单链表
- MapReduce笔记
- java中向文本文件中读取数据之使用BufferedReader类
- 双线性插值算法ARM NEON优化
- nodeJS基础学习
- Eclipse 一直提示 loading descriptor for 的解决方法
- STL 算法
- [问题解决]Android7.0上PopupWindow的showAsDropDown位置问题
- TCP连接状态图解析