初始提交:顺序表结构体、初始化与尾部追加

This commit is contained in:
7840HS_LapTop
2026-09-16 20:11:20 +08:00
commit b0b2caa90e
3 changed files with 108 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
# 编译产物
*.o
*.obj
*.exe
*.out
build/
# 编辑器配置(含本机路径,不上传)
.vscode/
+72
View File
@@ -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(){ //任意地方拿走元素,也是索引号+数值
}
+27
View File
@@ -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. 再做**环形队列**(队尾进、队头出)。