博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
篇章二线性表---基础知识
阅读量:1887 次
发布时间:2019-04-26

本文共 2377 字,大约阅读时间需要 7 分钟。

1.顺序表的结构体定义

//顺序表 typedef struct{	int data[maxsize];	int length;}SqList;//单链表typedef struct{	int data;	struct LNode *next;}LNode;//双链表typedef struct DLNode{	int data;	struct DLNode *prior;	struct DLNode *next;}DLNode;

2.顺序表常见操作

//按元素值查找算法int findElem(SQList L,int e){	int i;	for(i=0;i
L.length||L.length==maxsize) return 0; for(i=L.length-1;i>=p;i--) L.data[i+1]=L.data[i]; L.data[p]=e; ++(L.length); return 1;} //删除元素int deleteElem(SqList &L,int p,int &e){ int i; if(p<0||p>L.length-1) return 0; e=L.data[p]; for(i=p;i

3.单链表的操作

//尾插法建表void createListR(LNode &L,int a[],int n){	LNode *s,*r;	int i;	C=(LNode*)malloc(sizeof(LNode));	C->next=NULL;	r=C;	for(i=0;i
data=a[i]; r->next=s; r=r->next; } r->next=NULL;}//尾插法建表void createList(LNode *&C,int a[],int n){ LNode *s; int i; C=(LNode*)malloc(sizeof(LNode)); C->next=NULL; for(int i=0;i
data=a[i]; s->next=C->next; C->next=s; }} //A,B两个单链表递增有序,将A和B归并成非递减有序C void merge(LNode *A,LNode *B,LNode *&C){ LNode *p=A->next;LNode *q=B->next; LNode *r; c=A;c->next=NULL;free(B); r=C; while(p!=NULL&&q!=NULL) { if(p->data<=q->data) { r->next=p;p=p->next;r=r->next; } else { r->next=q;q=q->next;r=r->next; } } if(p!=NULL) r->next=p; if(q!=NULL) r->next=q;} //A,B两个单链表递增有序,将A和B归并成非递增有序C void merge(LNode *A,LNode *B,LNode *&C){ LNode *p=A->next;LNode *q=B->next; LNode *s; c=A;c->next=NULL;free(B); while(p!=NULL&&q!=NULL) { if(p->data<=q->data) { s=p;p=p->next;s->next=c->next;c->next=s; } else { s=q;q=q->next;s->next=c->next;c->next=s; } } while(p!=NULL) { s=p;p=p->next;s->next=c->next;c->next=s; } while(q!=NULL) { s=q;q=q->next;s->next=c->next;c->next=s; }}//查找链表C中值为x的结点,若存在,则删除int findAndDelete(LNode *C,int x){ LNode *p,*q; LNode *pre; p=c->next;pre=C; while(p!=NULL) { if(p->data==x) { pre=p; break; } p=p->next; } if(p==NULL) return 0; else { pre->next=p->next; free(p); }}

4.双链表的操作

//采用尾插法void createDistR(DLNode *&L,int a[],int n){	DLNode *s,*r;	int i;	L=(DLNode *)malloc(sizeof(DLNode));	L->prior=NULL;L->next=NULL;	r=L;	for(i=0;i
data=a[i]; r->next=s; s->prior=r; r=s; } r->next=NULL;}//查找结点DLNode *findNode(DLNode *C,int x){ DLNode *p=C->next; while(p!=NULL) { if(p-?data==x) break; p=p->next; } return p;} //插入结点 s->next=p->next; s->prior=p; p->next=s; s->next->prior=s;//删除结点 q=p->next; p->next=q->next; q->next->prior=p; free(q);

 

转载地址:http://szzdf.baihongyu.com/

你可能感兴趣的文章
视图:默认模板+默认布局(自定义布局)+nuxt.js页面(三)
查看>>
基于nuxt下asyncData,fetch发送axios请求(四)
查看>>
插件机制+自定义axios(五)
查看>>
Redis的学习之路
查看>>
Windows下Redies+GUI安装,使用Jedis与spring boot 整合
查看>>
Windows创建本地版本库(1)
查看>>
解决"nothing added to commit but untracked files present"
查看>>
基于java的酒店管理系统的设计与实现
查看>>
基于WEB的仓库管理系统的设计与实现
查看>>
基于java的web聊天系统
查看>>
基于java的俄罗斯方块的设计与实现
查看>>
基于java的魂斗罗的设计
查看>>
基于java的网页内容管理
查看>>
基于java的学生管理系统
查看>>
基于java网盘搜索的设计与实现
查看>>
基于SSM的仿小米商城源码
查看>>
基于SSM的医院人事管理系统的设计与实现
查看>>
基于SSM的网上购物系统的设计与开发
查看>>
基于SSM框架的BS微博系统的设计与实现
查看>>
超市订单管理系统
查看>>