用C或C++编程实现顺序表,要求顺序表的定义至少包含(1) 创建顺序表(2) 顺序表的按位查找(3) 顺序表的按位插入和按位删除(4) 按位获取某个元素等功能;然后实现两个顺序表的并操作(不允许重复元素)和两个有序顺序表的合并操作(允许重复元素)。
1条回答 默认 最新
关注 #define overflow -1 #define ok 1 #define error 0 #define maxsize 16 #define increment 10 #include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef int status; typedef int elemtype; typedef struct { elemtype *elem; int length; int listsize; } sqlist; status initlist(sqlist &L) { L.elem = (elemtype *)malloc(maxsize * sizeof(elemtype)); if (!L.elem) exit(overflow); L.length = 0; L.listsize = maxsize; return ok; } status insertlist(sqlist &L, int i, elemtype e) { if (i < 1 || i > L.length) return error; elemtype *p; int j; if (L.length >= L.listsize) { p = (elemtype *)realloc(L.elem, (L.listsize + increment) * sizeof(elemtype)); if (!p) exit(overflow); L.elem = p; L.listsize += increment; } for (j = L.length - 1; j >= i - 1; --j) L.elem[j + 1] = L.elem[j]; L.elem[j + 1] = e; L.length++; return ok; } void printlist(sqlist L) { int i; for (i = 0; i < L.length; i++) printf("%d ", L.elem[i]); printf("\n"); } status dellist(sqlist &L, int i, elemtype &e) { int j; if (i < 1 || i > L.length) return error; e = L.elem[i - 1]; for (j = i; j < L.length; j++) L.elem[j - 1] = L.elem[j]; --L.length; return ok; } int main() { sqlist LL; elemtype x; int r, i; if (!initlist(LL)) //初始化 return error; for (i = 0; i < 10; i++) LL.elem[i] = i * 8; LL.length += 10; //printf("value index-->"); //插入 //scanf("%d %d", &x, &r); x = 188, r = 3; insertlist(LL, r, x); printlist(LL); //printf("index-->"); //删除 //scanf("%d", &r); dellist(LL, r, x); printlist(LL); printf("xiaoxiaoran"); }
解决 无用评论 打赏 举报
悬赏问题
- ¥20 六子棋博弈基于Alpha-Beta剪枝搜索算法的优化
- ¥15 mlx90393用stm32f1的单片机使用软件i2c通信一直报错
- ¥50 使用MS Log Parser查询使用Bitvise SSH Server登录的IP
- ¥20 校园二手交易小程序搭建
- ¥15 请问在ubuntu用conda创建环境报错怎么能解决
- ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
- ¥20 python,计算区位熵和扩张指数
- ¥15 Python环境配置
- ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
- ¥15 arduino测量电阻