顺序表
来源:互联网 发布:威海矩阵直销软件价格 编辑:程序博客网 时间:2024/05/22 01:30
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;#define sizelist 100#define listincrease 10#define error -1#define ok 0typedef struct{ int *data; int length; int listsize;} sqlist;int createlist(sqlist &L,char *ch){ L.data=(int*)malloc(sizelist*sizeof(int)); L.length=0; L.listsize=sizelist; int n,i; cout<<"输入链表"<<ch<<"初始长度:"; cin>>n; if(n<=0) return error; cout<<"输入链表"<<ch<<"初始元素:"; for(i=0; i<n; i++) scanf("%d",&L.data[i]); L.length+=n; return 0;}int insertlist(sqlist &L,int i,int e){ int *p; int j=L.length; if(i<0||i>L.length) { cout<<"插入位置有误!!!\n"; return error; } if(L.length>=sizelist) { int *newbase=(int*)realloc(L.data,(L.listsize+listincrease)*sizeof(int)); if(!newbase) { cout<<"存储内存分配失败!!!\n"; return error; } L.listsize+=listincrease; L.data=newbase; } for(p=L.data+L.length; p>=L.data; p--,j--) { if(i==j) break; *p=*(p-1); } L.data[i]=e; L.length++; return ok;}int deletelist(sqlist &L,int i){ int *p; if(i<1||i>L.length) { cout<<"删除位置有误!!!\n"; return error; } for(p=L.data+i-1; p<=L.data+L.length; p++) *p=*(p+1); L.length--; return ok;}int print(sqlist &L,char *ch){ int *p; p=L.data; if(!L.length) { cout<<"链表"<<ch<<"为空!!!"<<endl; return error; } else { cout<<"输出链表"<<ch<<":"<<endl; int i=0; for(i=0; i<L.length; i++) { printf("%d ",*p); p++; } cout<<"\n"; } return 0;}void locate(sqlist &L,int e){ int *p=L.data; int i=0; int flag=0; while(p<=L.data+L.length) { i++; if(e==*p) { if(!flag) cout<<"输出该元素位置:\n"; cout<<i<<" "; flag=1; } p++; } if(!flag) cout<<"未找到!"; cout<<"\n";}void mergelist(sqlist &L,sqlist &Lb,sqlist &Lc){ Lc.data=(int*)malloc(sizelist*sizeof(int)); Lc.length=0; Lc.listsize=sizelist; int *pa=L.data,*pb=Lb.data,*pc=Lc.data; int *pa_last=pa+L.length-1,*pb_last=pb+Lb.length-1; while(pa<=pa_last&&pb<=pb_last) { if(*pa<*pb) *(pc++)=*(pa++); else *(pc++)=*(pb++); Lc.length++; } while(pa<=pa_last) { *pc++=*pa++; Lc.length++; } while(pb<=pb_last) { *pc++=*pb++; Lc.length++; } print(Lc,"Lc");}int main(){ sqlist l,l2,l3; int choice=-1,e,i; createlist(l,"La"); createlist(l2,"Lb"); printf("0-结束\n1-打印链表La和Lb\n2-对链表La插入\n3-对链表La删除\n4-对链表La定位\n5-合并链表La和Lb\n6-重建链表La\n7-重建链表Lb\n\n"); printf("选项:\n"); while(~scanf("%d",&choice)) { system("CLS"); printf("0-结束\n1-打印链表La和Lb\n2-对链表La插入\n3-对链表La删除\n4-对链表La定位\n5-合并链表La和Lb\n6-重建链表La\n7-重建链表Lb\n\n"); if(choice==0) break; else if(choice==1) { print(l,"La"); print(l2,"Lb"); } else if(choice==2) { cout<<"输入插入元素:"<<endl; cin>>e; cout<<"输入插入元素位置:"<<endl; cin>>i; insertlist(l,i,e); } else if(choice==3) { cout<<"输入删除元素位置:"<<endl; cin>>i; deletelist(l,i); } else if(choice==4) { cout<<"输入查找元素:\n"; cin>>e; locate(l,e); } else if(choice==5) mergelist(l,l2,l3); else if(choice==6) createlist(l,"La"); else if(choice==7) createlist(l2,"Lb"); else cout<<"请输入正确选项!\n"; printf("选项:\n"); }}
阅读全文
0 0
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 第二次
- Linux C实现简单的文件拷贝
- 5.5
- Oracle 11g,myeclipse2013 2014 PS cc2017 安装包下载
- HDU 1711-Number Sequence
- 顺序表
- Object Pascal 实例代码
- kafka的线程模型之一
- 贝尔数列_集合的划分
- 基础教学 | API 是如何工作的
- 对百度自动推送代码的一点看法
- DNS & CDN & HTTPDNS 原理简析
- 【2017宁波联考】生成树
- 实现一个自己的react-redux