初始提交:顺序表结构体、初始化与尾部追加
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
# 编译产物
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
build/
|
||||||
|
|
||||||
|
# 编辑器配置(含本机路径,不上传)
|
||||||
|
.vscode/
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int max; //列表最大长度
|
||||||
|
int length; //列表现在的长度
|
||||||
|
int *start; //内存地址起始位置
|
||||||
|
int front; //列表起始索引
|
||||||
|
int end; //列表结束索引
|
||||||
|
|
||||||
|
}queue;
|
||||||
|
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
queue q;
|
||||||
|
printf("输入整个列表长度");
|
||||||
|
int length;
|
||||||
|
scanf("%d",&length);
|
||||||
|
int b;
|
||||||
|
printf("接下来依次输入放进列表的东西");
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
/* code */
|
||||||
|
scanf("%d",&b);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int q_init(queue *q,int length){ //就是普通的初始化。要给他什么参数呢?首先就是queue的地址,然后是一个初始长度。然后初始化全0就行了。
|
||||||
|
q->start=malloc(length*sizeof(int));
|
||||||
|
q->max=length;
|
||||||
|
q->front=0;
|
||||||
|
q->end=0;
|
||||||
|
q->max=0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int q_add(queue *q,int num){ //最后边加上元素
|
||||||
|
if(q->length==q->max){ //容量不够了的自动扩容
|
||||||
|
q->max+=5;
|
||||||
|
q->start=realloc(q->start,q->max*sizeof(int));
|
||||||
|
}
|
||||||
|
q->start[q->end]=num;
|
||||||
|
q->end++;
|
||||||
|
q->length++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int q_addpro(){ //任意地方加上元素,要进去一个索引编号和数值
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int q_reduce(){ //最前面拿走元素
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int q_reducepro(){ //任意地方拿走元素,也是索引号+数值
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# 项目说明:C 数据结构练习
|
||||||
|
|
||||||
|
我的数据结构课练习项目,用 C 语言手写各种数据结构。之前用同样风格完成过一个栈(在另一个仓库)。
|
||||||
|
|
||||||
|
## 协作方式(重要)
|
||||||
|
|
||||||
|
- 这是我的**学习 / 练习**项目,我是初学者。**不要直接贴完整代码或答案**,用提问和提示引导我自己写。
|
||||||
|
- 发现我代码里的 bug 时,**不要直接指出在哪一行、是什么**,只给一个模糊方向(哪一段、哪一类问题),让我自己定位和修复。只有我明确求助、或长时间卡住、或问题会造成破坏性后果时,才逐步给更多提示。
|
||||||
|
- 解释要口语化、多打比方,别堆术语。用**中文**和我交流。
|
||||||
|
|
||||||
|
## 代码风格约定
|
||||||
|
|
||||||
|
- 单文件 `.c`,函数原型写在 `main` 上方,函数体写在下面,测试逻辑写在 `main` 里。
|
||||||
|
- 结构体和函数命名沿用拼音风格;函数体里保留中文注释记录当时的思路。
|
||||||
|
- 数据用动态数组存储,靠 `malloc` 建、`realloc` 扩容。
|
||||||
|
|
||||||
|
## 当前进度
|
||||||
|
|
||||||
|
- 正在做 **顺序表(线性表)**,文件 `1.c`,结构体暂时命名为 `queue`(名字之后可能改)。
|
||||||
|
- 已完成:结构体定义、`q_init`(初始化)、`q_add`(尾部追加)。
|
||||||
|
- 待办:修正 init;写打印函数;实现任意位置插入 `q_addpro`;实现删除 `q_reduce` / `q_reducepro`;把 `main` 和这些函数串起来测试。
|
||||||
|
- 还没接上:`main` 目前没有调用任何操作函数,需要先串通再靠打印看效果。
|
||||||
|
|
||||||
|
## 学习路线
|
||||||
|
|
||||||
|
1. 先做**顺序表**(任意位置插入 / 删除,含元素移位)。
|
||||||
|
2. 再做**环形队列**(队尾进、队头出)。
|
||||||
Reference in New Issue
Block a user