在ViusalStudio中编写数据结构实验

61 阅读1分钟

学习数据结构时候,从线性表到链表,到队列和栈,后面的数据结构往往需要用到前面的数据结构,将一门课的实验统一为一个数据结构大项目有助于我们更好的理解。

例子在stitch001/ProjectDS (github.com)

项目架构

主解决方案 ProjectDS

新建空项目,命名为 Main,解决方案名称 命名为 ProjectDS

image.png

新建完成后,应该有一个项目

image.png

启动项目 Main

在启动项目中,添加 Main.cpp 编写启动代码

#include <iostream>

using namespace std;

int main() {
	cout << "first" << endl;
}

子项目 链表

ProjectDS中添加静态类库,命名为 LinkedListLib。右键解决方案ProjectDS -> 添加新建项目 C++/Windows/静态库 创建完成后,右键头文件,添加头文件,定义我们的数据结构:数据和算法,和最重要的访问的函数

inkedlisthead.h

struct ListNode {
	int val;
	ListNode* next;
};

typedef ListNode* LinkedList;

void LinkedListTest();

LinkedList createLinkedList(int arr[]);
void traverse(LinkedList);

Main项目中 添加引用

image.png 勾上LinkedListLibMain.cpp中 添加头文件 #include "../LinkedListLib/linkedlisthead.h" main函数中调用LinkedListLib项目的入口函数LinkedListTest();
main.cpp 添加到这里

cout << "first" << endl;
LinkedListTest(); //当前学习的数据结构

linkedlisthead.h 定义数据和函数声明

struct ListNode {
	int val;
	ListNode* next;
};
typedef ListNode* LinkedList;
void LinkedListTest();
LinkedList createLinkedList(int arr[], int size);
void traverse(LinkedList);

linkedlisthead.cpp 定义函数的实现

#include "linkedlisthead.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
void LinkedListTest()
{
    int arr[] = {1,2,3,4,5};
    int size = sizeof(arr) / sizeof(int);
    auto head = createLinkedList(arr, size);
    traverse(head);
    return;
}

void traverse(LinkedList head) {
    auto p = head->next;
    while (p != NULL) {
        cout << p->val << "----";
        p = p->next;
    }
}

LinkedList createLinkedList(int arr[],int size)
{
    LinkedList head = (ListNode*)malloc(sizeof(ListNode));
    head->next = NULL;
    head->val = -1;
    for (int i = size - 1; i >= 0; i--) {
        ListNode* lt = (ListNode*)malloc(sizeof(ListNode));
        lt->val = arr[i];
        lt->next = head->next;
        head->next = lt;
    }
    return head;
}

子项目 栈

子项目 树

子项目 排序