{"id":20483442,"url":"https://github.com/styczynski/ipp-bin-tree","last_synced_at":"2026-06-08T05:31:19.626Z","repository":{"id":79817380,"uuid":"84841380","full_name":"styczynski/ipp-bin-tree","owner":"styczynski","description":"Student's work (individual programistic project) at Warsaw University","archived":false,"fork":false,"pushed_at":"2017-03-27T15:35:34.000Z","size":10278,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-05T16:16:22.759Z","etag":null,"topics":["c","ipp-mimuw","warsaw-university"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/styczynski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-13T15:15:37.000Z","updated_at":"2020-02-14T11:47:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"a9b7204e-09ff-446a-866c-6645d3ec2e74","html_url":"https://github.com/styczynski/ipp-bin-tree","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/styczynski/ipp-bin-tree","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/styczynski%2Fipp-bin-tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/styczynski%2Fipp-bin-tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/styczynski%2Fipp-bin-tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/styczynski%2Fipp-bin-tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/styczynski","download_url":"https://codeload.github.com/styczynski/ipp-bin-tree/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/styczynski%2Fipp-bin-tree/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34050225,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","ipp-mimuw","warsaw-university"],"created_at":"2024-11-15T16:17:22.805Z","updated_at":"2026-06-08T05:31:19.621Z","avatar_url":"https://github.com/styczynski.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ipp-bin-tree\nWritten in pure C99\nStudent's work (individual programistic project) at Warsaw University\nProject purpose was to implement a tree-like structure based on bidirectional dynamically allocated lists.\n\n## Building\nClone the repo using `git clone https://github.com/isis97/ipp-bin-tree` \n* Build files using    `make`\n* Run tests using      `make test`\n* Run distribution executable using `make run`\n\nThis project is using general-purpose makefile scripts designed by me.\n\n## Usage\nGenerated executable (dist/soltuton) contains expression parser (presentation purposes).\nThe parser allows you to input the given commands:\n\n* `.` - print current tree structure\n* `!` - terminate application\n* `ADD_NODE \u003ck\u003e` - add new node (next number from prevoiously added) as a child of node #k\n* `RIGHTMOST_CHILD \u003ck\u003e` - print rightmost direct child of node #k\n* `DELETE_NODE \u003ck\u003e` - delete node #k and transfer its children to its parent\n* `DELETE_SUBTREE \u003ck\u003e` - delete node #k and all its children (even indirect)\n* `SPLIT_NODE \u003ck\u003e \u003cw\u003e` - (#k must be the parent of #w) create new node to the right of node #w, which will have all nodes to the right of #w as children.\n\nTrees (supports adding nodes labelled with any number)  and IncrTrees (supports incrementive node numbers) support all of this operations.\nSee .h files for further details.\n\n## Libraries usage\nTree usage example (full documentiation available in .h files):\n\n```c\n#include \"tree.h\"\n\nint main() {                //\n  tree t = Trees.new();     // Create new empty tree\n                            // It already contains -1 node - root of the tree\n                            //\n  Trees.addNode(t, -1, 0);  // Adds node #0 to existing root (-1)\n  Trees.addNode(t, 0, 1);   // Adds node #1 to node #0\n  Trees.addNode(t, 1, 2);   // Adds node #2 to node #1\n                            //\n  Trees.removeNode(t, 0);   // Remove node #1 and transfer all its children to its parent (node #0)\n                            //\n  Trees.print(t);           // Print tree structure to stdout\n                            //\n  Trees.free(t);            // Deallocate tree\n  return 0;                 //\n}\n```\n\nProject contains also data structures like lists:\n\n```c\n#include \"list.h\"\n\nint main() {                //\n  list l = Lists.new();     // Create new empty list\n                            // \n  int x = 42;               // Set some data to insert to the list.\n  int b = 16;               // Note that lists captures only void* pointers to held elements.\n  int c = 8;                // You must store them somewhere else\n                            // (also free after detaching from list etc.)\n                            //\n  Lists.pushFront(l, \u0026a);   // Push elements to the front of the list\n  Lists.pushFront(l, \u0026b);   //\n  Lists.pushFront(l, \u0026c);   //\n                            //\n  Lists.popBack(t);         // Remove last element\n                            //\n  Lists.print(t);           // Print list to stdout\n                            //\n  Lists.free(t);            // Deallocate list\n  return 0;                 //\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstyczynski%2Fipp-bin-tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstyczynski%2Fipp-bin-tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstyczynski%2Fipp-bin-tree/lists"}