原题链接:数据结构-链表的基本操作
#include <iostream> #include <cstring> #include <string> #include <stdlib.h> using namespace std; int len = 0; typedef struct node { int data; node* next; }; void create_list(node*& p) { node* p1 = p, * s; scanf("%d", &len); for (int i = 0; i < len; i++) { s = (node*)malloc(sizeof(node)); cin >> s->data; s->next = p1->next; p1->next = s; } } void show_list(node*& n) { node* p; p = n->next; if (p == NULL) //链表为空 { cout << "Link list is empty\n"; } else { while (p != NULL) { cout << p->data << " "; p = p->next; } cout << "\n"; } } //删除指定位置的数 void delete_list(node *& n,int i) { node *p = n, *q; int j = 0; if (len == 0 || i > len) { printf("delete fail\n"); } else { while (j < i) //定位到要删除的位置 { q = p; p = p->next; j++; } q->next = p->next; free(p); len--; cout << "delete OK\n"; } } //获取第i个元素 void get_list(node*& n, int i) { node* p = n; int j = 0; if (len == 0 || i > len) { printf("get fail\n"); } else { while (j < i) { p = p->next; j++; } cout << p->data << "\n"; } } //插入node void insert_list(node*& n, int i, int e) { node* p = n, *s; int j = 0; if (i - 1 > len) { printf("insert fail\n"); } else { while (j < i - 1) { p = p->next; j++; } s = (node*)malloc(sizeof(node)); s->data = e; s->next = p->next; p->next = s; len++; cout << "insert OK\n"; } } int main() { int count, i, e; node* n = (node*)malloc(sizeof(node)); n->next = NULL; create_list(n); char flag[7]; scanf("%d", &count); scanf("%s", flag); while (count--) { if (!strcmp(flag,"show")) { show_list(n); } else if (!strcmp(flag, "delete")) { scanf("%d", &i); delete_list(n, i); } else if (!strcmp(flag, "insert")) { scanf("%d %d", &i, &e); insert_list(n, i, e); } else if (!strcmp(flag, "get")) { scanf("%d", &i); get_list(n, i); } scanf("%s", flag); } return 0; }
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复