线性表的插入、查找与删除
来源:互联网 发布:sql sever外键约束 编辑:程序博客网 时间:2024/05/16 09:05
#include "stdio.h"#include "stdlib.h"#include "assert.h"#define MAX_LIST 100typedef int elemType;typedef int stadus; typedef struct sqlist{elemType *elem;int length;int size;}mySqlist,*mySqlistPtr;//o(1)void initList(mySqlist &Tlist){Tlist.elem = (int *)malloc(sizeof(int)*MAX_LIST);Tlist.length = 0;Tlist.size = 100;}//o(1)void destroyList(mySqlist &Tlist){free(Tlist.elem);Tlist.length = 0;Tlist.size = 0;}//非排序插入 //o(1)void insertList(mySqlist &Tlist,int elem){assert(Tlist.length<Tlist.size);if(Tlist.length>=Tlist.size){Tlist.elem = (int *)realloc(Tlist.elem,sizeof(int)*(Tlist.size+MAX_LIST));Tlist.size +=MAX_LIST;} Tlist.elem[Tlist.length] = elem;Tlist.length++;}void insertList(mySqlist &Tlist,int elem,int location){int *a,*b;assert(Tlist.length<Tlist.size);if(Tlist.length>=Tlist.size){Tlist.elem = (int *)realloc(Tlist.elem,sizeof(int)*(Tlist.size+MAX_LIST));Tlist.size +=MAX_LIST;} a = &Tlist.elem[location - 1];for(b = &Tlist.elem[Tlist.length-1];a<=b;b--)*(b+1) = *b;Tlist.elem[location-1] = elem;Tlist.length++;}void checkList(mySqlist & Tlist,int elem,int &location){location = -1;for(int i = 0;i<Tlist.length;i++){//o(length(Tlist))if(Tlist.elem[i] == elem){location = i; break;}}}//o(Tlist.length+1-location)void deleteList(mySqlist &Tlist,int location){assert(location>0&&location<Tlist.length+1);for(int i = location;i<Tlist.length+1;i++){Tlist.elem[i-1] = Tlist.elem[i];}Tlist.length-=1;}//返回一一个满足compare的元素的位序 ,没有返回-1 void listLocation(mySqlist &sqlist, int elem, int &location, bool(*compare)(int, int)) {for (int i = 0; i < sqlist.length + 1; i++) {if (compare(elem, sqlist.elem[i]) == true) {location = i+1;break;}location = -1;}}bool equal(int a, int b){return a==b;} int main(){int temp=0;int location=0; mySqlist sqlist;initList(sqlist);printf("\n输入插入元素:");while(scanf("%d",&temp)!=EOF){insertList(sqlist,temp);printf("\n输入插入元素:");}printf("输入查找位序元素值:");scanf("%d",&temp);listLocation(sqlist,temp,location,equal);printf("位序:%d\n",location);printf("按照位序插入元素(输入元素,输入位置):");while(scanf("%d %d",&temp,&location)!=EOF){insertList(sqlist,temp,location);printf("\n按照位序插入元素(输入元素,输入位置):");}printf("\n输出全表元素:");for(int i = 0;i<sqlist.length;i++){printf("%d ",sqlist.elem[i]);} printf("\n输入查找元素:");while(scanf("%d",&temp)!=EOF){checkList(sqlist,temp,location);printf("位序为:%d\n",location); printf("输入查找元素:");}printf("\n输出全表元素:");for(int i = 0;i<sqlist.length;i++){printf("%d ",sqlist.elem[i]);} printf("\n输入删除元素位序:"); while(scanf("%d",&location)!=EOF){deleteList(sqlist,location);printf("输入删除元素位序:");}printf("\n输出全表元素:");for(int i = 0;i<sqlist.length;i++){printf("%d ",sqlist.elem[i]);} destroyList(sqlist);return 0;}
阅读全文
0 0
- 线性表的插入、查找与删除
- 线性表的插入,删除,合并,查找
- 线性表---顺序表(查找、插入与删除)
- 链式线性表的插入与删除
- 线性链表的插入与删除
- 结构之美:线性表的查找、插入与删除操作
- 线性表的输入输出插入删除查找(顺序表示)
- 线性表的顺序储存结构 初始化、查找、删除、插入
- 线性链表的查找插入删除算法
- 线性表建立、插入、删除、查找应用
- 数据结构 P28-29 算法实现 线性表的链式存储结构——链表的查找、插入与删除
- 线性表的 插入 删除
- 线性表的插入删除
- 线性表的插入删除
- 线性表的输入输出查找删除插入(链式,头插入)
- 线性表的输入输出查找删除插入(链式,尾插入)
- 线性表的 赋值,插入,与元素的删除
- 线性表的链式存储的插入与删除操作
- pcl+cuda基本用法
- weblogic里poi的jar冲突解决
- ViewPager和Frangment
- Codeforces Round #432
- laravel 利用异常查找BUG
- 线性表的插入、查找与删除
- HDU--1869--六度分离(最短路)
- BZOJ 2321: [BeiJing2011集训]星器
- ListView多条目加载
- Piggy Back
- Javascript初级
- Python 语法元素
- scala函数的定义
- HashMap HashTable ConcurrentHashMap 区别