原题链接:数据结构-链表的基本操作
解题思路:
注意事项:
参考代码:
#include<stdio.h> #include<string.h> typedef struct _Node { int data; struct _student *next; }Node,*LinkList; LinkList list_Init(int n) { LinkList L; L=(Node *)malloc(sizeof(Node)); if(L==NULL) { printf("申请空间失败"); exit(0); } L->next=NULL; //前插法 for(int i=0;i<n;i++) { Node*p; p=(Node *)malloc(sizeof(Node)); scanf("%d",&p->data); p->next=L->next; L->next=p; } return L; } void get(LinkList L,int a) { Node* p=L; for(int i=1;i<=a;i++) { if(p!=NULL) { p=p->next; } else { printf("get fail\n"); exit(0); } } printf("%d\n",p->data); } void delete(LinkList L,int a) { Node* pre=L; for(int i=1;i<a;i++) { if(pre!=NULL&&pre->next!=NULL) { pre=pre->next; } else { printf("delete fail\n"); return; } } Node* cur=pre->next; pre->next=cur->next; free(cur); printf("delete OK\n"); } void insert_LinkList(LinkList L,int data,int addr) { Node* p=L; for(int i=1;i<addr;i++) { if(p!=NULL&&p->next!=NULL) p=p->next; else { printf("insert fail\n"); return; } } Node *n; n=(Node *)malloc(sizeof(Node)); n->data=data; n->next=p->next; p->next=n; printf("insert OK\n"); } void show_LinkList(LinkList L) { if(L->next==NULL) { printf("Link list is empty\n"); } else { Node *r=L->next; while(r) { printf("%d ",r->data); r=r->next; } printf("\n"); } } int main() { int n1; scanf("%d",&n1); LinkList L=list_Init(n1); int n2; scanf("%d",&n2); char order[10]; for(int i=0;i<n2;i++) { scanf("%s",order); if(!strcmp(order,"get"))//获取 "get" { int a; scanf("%d",&a); get(L,a); } else if(!strcmp(order,"insert"))//插入 "insert" { int addr,data; scanf("%d%d",&addr,&data); insert_LinkList(L,data,addr); } else if(!strcmp(order,"delete"))//删除 "delete" { int a; scanf("%d",&a); delete(L,a); } else if(!strcmp(order,"show"))//显示 "show" { show_LinkList(L); } } return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复