(线性)单链表的C语言实现--保持有序
来源:互联网 发布:js div class 编辑:程序博客网 时间:2024/06/15 04:10
线性表,单链表的C语言实现,基本操作:初始化,插入,获取,删除,输出链表,插入时并保持有序。
#include <stdio.h>#include <stdlib.h>#include<malloc.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkedList;//初始化链表 int InitList(LinkedList *L){ *L=(LinkedList)malloc(sizeof(LNode)); if(L == NULL){ printf("申请内存空间失败\n"); exit(0); } (*L)->next = NULL; return OK;}//插入 int Insert(LinkedList *L, int num){ LNode *p,*q,*s; q=*L; p=q->next; while(p!=NULL && num>p->data){ q=p; p=p->next; } s=(LNode *)malloc(sizeof(LNode)); s->data=num; s->next=p; q->next=s; return OK;}//获取元素 int GetElem(LinkedList L,int i,int *e){int j=1;LNode *p;p = L->next;while (p && j < i) {p = p->next; ++j;}if ( !p || j>i )return ERROR; *e = p->data;return OK;}//删除元素int deleteList(LinkedList *L,int i,int *e){LNode *q,*p;int j=1;q=*L;p=(*L)->next;while(p!=NULL&&j<i){q=p;p=p->next;j++;}if(!p||j>i) return ERROR;*e = p->data;q->next=p->next;free(p);return OK;} //输出链表 int ListOutput(LinkedList *L){ LNode *p; p=(*L)->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } printf("\n"); return OK;}//求链表长度int ListLength(LinkedList *L){LNode *p;int i=0;p=(*L)->next;while(p!=NULL){i++;p=p->next;}return i;} int main(){ LinkedList L; InitList(&L); int x; printf("请输入链表数据:\n");while(scanf("%d",&x)!=EOF){Insert(&L,x);}printf("输出链表:\n"); ListOutput(&L); printf("\n"); printf("请输入要插入的数据:"); scanf("%d",&x);Insert(&L,x) ;printf("输出链表:\n"); ListOutput(&L); printf("\n"); printf("请输入要提取的数据位置:\n"); int i; int e; scanf("%d",&i); if(GetElem(L,i,&e)) printf("所要数据为:%d\n",e);else printf("输入错误!\n");printf("请输入要删除的数据位置:\n"); scanf("%d",&i); deleteList(&L,i,&e);ListOutput(&L);printf("链表长度:%d\n",ListLength(&L)); return 0;}
阅读全文
1 0
- (线性)单链表的C语言实现--保持有序
- C语言实现有序单链表的插入
- 有序单链表的插入 C语言实现
- 线性表的实现(C语言)
- 线性表的链式存储(单链表)C语言实现
- 单链表编写递增有序并集(c语言实现)
- 【C语言】两个有序单链表的合并
- 线性表的顺序方式实现(c语言)
- 【数据结构】数据结构C语言的实现(线性表)
- 栈(一)线性存储栈的c语言实现
- 顺序线性表的基本操作(C语言实现)
- 线性表的顺序存储结构(C语言实现)
- 线性表的链式存储结构(C语言实现)
- 线性查找算法的C语言实现
- 线性表的顺序实现(C语言)
- 线性表的顺序实现(c语言)
- 线性表的C语言实现
- c语言循环线性队列的实现
- atoi模拟实现(考虑溢出问题)
- Sublime Text 3使用详解
- echarts饼图 +easyui 异步显示数据
- anaconda安装tensorflow
- Java基础之数据类型(三)数组
- (线性)单链表的C语言实现--保持有序
- android 7.0 加入 android:directBootAware之关机闹钟无声
- spring cloud之分布式配置(七)
- adobe acrobat x pro破解版
- PLSQL链接oracle报错--ORA-12154: TNS: 无法解析指定的连接标识符
- JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣。
- tiny4412 busybox制作根文件系统rootfs nfs 挂载 ubuntu 14.04
- java 学习路线
- jquery 使用dialog弹窗显示在整个屏幕上,而不是只遮盖当前的ifream或div,另附dialog中加返回按钮,设置高宽等