数据结构基础2_单链表的实现
来源:互联网 发布:图像融合算法代码 编辑:程序博客网 时间:2024/06/08 00:06
#include<stdio.h>#include<stdlib.h>#include<sqlist1.h>#define true 1#define false 0typedef int Status;typedef struct Lnode{ElemType data;struct Lnode *next;}Lnode,*linklist;void Initlist(linklist &L){L=(linklist)malloc(sizeof(Lnode));L->next=NULL;}void Destorylist(linklist &L){free(L);L=NULL;}void Clearlist(linklist &L){L->next=NULL;}bool Listempty(linklist L){if(L->next=NULL){return true;}else{return false;}}Status Listlength(linklist L){int n=0;Lnode *p=L->next;int i=1;while(p!=NULL){n++;p=p->next;}return n;}Status Getelem(linklist L,int i,ElemType &e){Lnode *p=L->next;int j=1;while(p&&j<i){p=p->next;++j;}if(!p||j>i){return false;}e=p->data;}Status Locatelem(linklist L,ElemType e,Status compare(ElemType,ElemType)){ Lnode *p=L->next;int i=0;while(p!=NULL){i++;if(compare(e,p->data)){return i;}p=p->next;}}Status Priorelem(linklist L,ElemType e,ElemType &pre_e){int i=0;Lnode *p=L->next;while(p!=NULL){i=Locatelem(L,e,compare_sq);if(i!=0&&i!=1){Getelem(L,i-1,pre_e);return true;}p=p->next;}return false;}Status Nextelem(linklist L,ElemType e,ElemType &next_e){int i=0;Lnode *p=L->next;while(p!=NULL){i=Locatelem(L,e,compare_sq);if(i<Listlength(L)){Getelem(L,i+1,next_e);return true;}p=p->next;}return false;}Status Listinsert(linklist &L,int i,ElemType e){Lnode *p=L;Lnode *s;int j=0;while(p&&j<i-1){p=p->next;++j;}if(!p&&j>i-1){return false;}s=(linklist)malloc(sizeof(Lnode));s->data=e;s->next=p->next;p->next=s;return true;}Status Listdelete(linklist &L,int i,ElemType e){Lnode *p=L;Lnode *q;int j=0;while(p->next&&j<i-1){p=p->next;++j;}if(!(p->next)&&j>i-1){return false;} q=p->next;p->next=q->next;e=q->data;free(q);return true;}Status visit(linklist &L){printf("%d",L->data);}Status Listtraverse(linklist L,Status visit(linklist &L)){Lnode *p;p=L->next;while(p!=NULL){if(visit(p)==0){return false;}p=p->next;}}void Createlist(linklist &L,int n){ L=(linklist)malloc(sizeof(Lnode)); L->next=NULL; Lnode *p; for(int i=n;i>0;--i) { p=(linklist)malloc(sizeof(Lnode)); scanf("%d",&p->data); p->next=L->next; L->next=p; }}void mergelist(linklist &La,linklist &Lb,linklist &Lc){ Lnode *pa,*pb,*pc; pa=La->next; pb=Lb->next; Lc=pc=La; while(pa&&pb) { if(pa->data<=pb->data) { pc->next=pa; pc=pc->next; pa=pa->next; } else { pc->next=pb; pc=pc->next; pb=pb->next; } } if(pa==NULL) { pc->next=pb; } else { pc->next=pa; } free(Lb); }
<pre name="code" class="cpp">#include<iostream>#include<stdio.h>#include<linklist1.h>#include<stdlib.h>int main(){ linklist La;Initlist(La);Listinsert(La, 1, 1);Listinsert(La, 2, 2);Listinsert(La, 3, 5);Listinsert(La, 4, 7);Listinsert(La, 5, 10);Listdelete(La, 5, 10);int len=Listlength(La);printf("%d\n",len);int h;Getelem(La,2,h);printf("%d\n",h);Listtraverse(La, visit);printf("\n");linklist Lb;Createlist(Lb,10);Listtraverse(Lb,visit);printf("\n");linklist Lc;mergelist(La,Lb,Lc);Listtraverse(Lc, visit);system("pause");}
0 0
- 数据结构基础2_单链表的实现
- 数据结构基础4_双链表的实现
- 数据结构基础5_顺序栈的实现
- 数据结构基础6_链栈的实现
- 数据结构基础7_链队的实现
- 数据结构基础3_带头结点的单链表
- 实战数据结构(9)_单链表实现多项式的相乘
- 【数据结构_链表_List_0953】单链表的删除操作实现
- 基础数据结构_模板
- 数据结构基础8_循环队列(顺序实现)
- 数据结构的C实现_顺序表
- 数据结构的C实现_顺序栈
- 数据结构的C实现_链式队列
- 数据结构的C实现_循环队列
- 数据结构的C实现_二叉树
- 数据结构的C实现_循环队列
- 数据结构_串_串的一些操作_C++实现
- 数据结构的C实现_图_邻接矩阵表示
- 鼠标绘制图形
- 简单统计代码行数
- c++ 中__declspec 的用法
- 使用GDI+进行图片处理时要注意的问题
- Android中Handler引起的内存泄露
- 数据结构基础2_单链表的实现
- light oj 1251 - Forming the Council (2-SAT + 输出任意解)
- MP4文件写入音频和视频(使用mpeg4ip)
- 排序二叉树
- 深拷贝和浅拷贝
- android数据库的基本简单操作
- 查看oracle执行计划(命令实现)
- C++中的vector使用范例
- [Cocoa]_[NSTableView]_[基本使用]