首页
友链
统计
留言
关于
Search
1
Java生成二维码——基于Google插件
65 阅读
2
网站声明
57 阅读
3
Java使用poi-tl动态生成word和pdf
39 阅读
4
循环单链表及其实现
34 阅读
5
双链表及其实现
34 阅读
默认分类
Java
C语言
数据库技术
Linux
前端
其他
登录
/
注册
Search
标签搜索
C语言
数据结构
Java
Spring
数据库技术
MySQL
设计模式
策略模式
工厂模式
IDEA
SpringMVC
AOP
MybatisPlus
POI
easyExcel
LiXiangrong
累计撰写
56
篇文章
累计收到
4
条评论
首页
栏目
默认分类
Java
C语言
数据库技术
Linux
前端
其他
页面
友链
统计
留言
关于
搜索到
13
篇与
的结果
2024-01-05
栈的应用一——括号匹配
// 括号匹配 int matchBracket(char c[]) { seqStack stack; init(&stack); int i = 0; while (c[i]) { switch (c[i]) { case '{': case '[': case '(': push(&stack,c[i]);break; case '}': if(!empty(stack) && read(stack) == '{') { pop(&stack); break; } else return 0; case ']': if(!empty(stack) && read(stack) == '[') { pop(&stack); break; } else return 0; case ')': if(!empty(stack) && read(stack) == '(') { pop(&stack); break; } else return 0; } i++; } return empty(stack); // 匹配结束后栈空则匹配成功,否则失败。 } int main() { char c[] = "{[()]}"; if(matchBracket(c)) printf("匹配成功!\n"); else printf("匹配失败!\n"); return 0; }
2024年01月05日
3 阅读
0 评论
0 点赞
2024-01-05
顺序栈及其实现
#include <stdio.h> #include <stdlib.h> typedef int dataType; #define MAX_SIZE 100 // 2.3 顺序栈(设定top=0为空栈) typedef struct { dataType a[MAX_SIZE]; int top; }seqStack; // 1.初始化(置空)栈 void init(seqStack *st) { st->top = 0; } // 2.判断栈是否为空 int empty(seqStack st) { return st.top ? 0:1; } // 3.读栈顶元素 dataType read(seqStack st) { if(empty(st)) { printf("栈是空的!\n"); exit(1); } return st.a[st.top-1]; } // 4.元素x进栈 void push(seqStack *st, dataType x) { if(st->top == MAX_SIZE) { printf("栈已满,无法进栈!\n"); exit(1); } st->a[st->top] = x; st->top+=1; // 或st->top++; } // 5.出栈 void pop(seqStack *st) { if(!st->top) { printf("栈已空,无法出栈!"); exit(1); } st->top-=1; // 或st->top--; } int main() { seqStack st; // 定义栈 init(&st); // 初始化栈 dataType x = 1; push(&st,x); // 数据元素x进栈 printf("%d\n", read(st)); // 读栈顶元素 pop(&st); // 出栈 pop(&st); // 出栈 return 0; }
2024年01月05日
14 阅读
0 评论
0 点赞
2024-01-05
顺序表及其实现
#include <stdio.h> #include <stdlib.h> typedef int dataType; #define MAX_SIZE 100 // 2.2.2 顺序表(顺序存储的线性表) typedef struct { dataType a[MAX_SIZE]; int size; }seqList; // 1.顺序表的初始化/置空表 void init(seqList *slt) { slt->size = 0; } // 2.在顺序表尾部追加值为x的元素 void append(seqList *slt,dataType x) { if(slt->size == MAX_SIZE) { printf("顺序表是满的,无法追加!\n"); exit(1); } slt->a[slt->size++] = x; } // 3.判断顺序表是否为空 int empty(seqList slt) { return !slt.size; } // 4.打印顺序表各结点的值 void display(seqList slt) { if(empty(slt)) printf("顺序表是空的!\n"); else { for (int i = 0; i < slt.size; i++) printf("%d ",slt.a[i]); printf("\n"); } } // 5.查找顺序表中值为x的结点位置 int find(seqList slt, dataType x) { int i = 0; while (i < slt.size && slt.a[i] != x) i++; return i < slt.size ? i : -1; } // 6.获取顺序表第i个结点的值 dataType get(seqList slt,int i) { if(i < 1 || slt.size < i) { printf("访问越界!\n"); exit(1); } return slt.a[i-1]; } // 7.在顺序表的position位置插入值为x的结点 void insert(seqList *slt, int position,dataType x) { if(slt->size == MAX_SIZE) { printf("顺序表是满的,无法插入!"); exit(1); } if(position < 0 || position > slt->size) { printf("插入的位置非法,无法插入!"); exit(1); } for (int i = slt->size; i > position; i--) slt->a[i] = slt->a[i-1]; slt->a[position] = x; slt->size+=1; // 或slt->size++; } // 8.删除顺序表第position位置的结点 void del(seqList *slt, int position) { if(empty(*slt)) { printf("顺序表是空的,无法删除!"); exit(1); } if(position < 0 || position >= slt->size) { printf("删除的位置非法,无法删除!\n"); exit(1); } for (int i = position; i < slt->size-1; i++) slt->a[i] = slt->a[i+1]; slt->size-=1; // 或slt->size--; } // 9.中点优先递归遍历顺序表 void listOrder(seqList list, int low, int high) { if(low <= high) { int mid = (low+high)/2; printf("%d ",list.a[mid]); listOrder(list,low,mid-1); listOrder(list,mid+1,high); } } // 10.从键盘输入创建顺序表 void scanCreateList(seqList *list) { printf("请输入整数序列,以9999作为结尾:\n"); dataType x; scanf("%d",&x); while (x != 9999 && list->size < MAX_SIZE) { list->a[list->size++] = x; scanf("%d",&x); } } // 11.把顺序表前后两部分位置对调(0-m,m+1-n变为m+1-n,0-m) void divList(seqList *L, int m) { int i, j, x, last = L->size-1; for (i = 1; i <= m; i++) { x = L->a[0]; for (j = 1; j <= last ; j++) L->a[j-1] = L->a[j]; L->a[last] = x; } } int main() { seqList slt; // 定义顺序表 init(&slt); // 初始化顺序表 display(slt); // 打印顺序表 append(&slt,1); append(&slt,2); // 追加元素 display(slt); printf("%d\n",find(slt,2)); // 按值查找 printf("%d\n",get(slt,2)); // 按位查找 insert(&slt,0,3); // 插入元素 display(slt); listOrder(slt,0,slt.size-1); printf("\n"); seqList L; init(&L); scanCreateList(&L); display(L); divList(&L,4); display(L); return 0; }
2024年01月05日
31 阅读
0 评论
0 点赞
1
2
3