原题链接:数据结构-链表的基本操作
解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义结点类型
typedef struct Node{
int data;
struct Node *next;
}Node,*Link;
void List_creat(Link head,int n); //头插法创建
int List_insrt(Link head,int i,int n); //插入数据
int List_delete(Link head,int i); //按位删除数据
int List_show(Link head); //遍历链表
int List_get(Link head,int i); //按位获取数据
int main()
{
int n,a,b;
char str[7];
Link head;
head = (Link)malloc(sizeof(Node));
head->next=NULL;
scanf("%d",&n);
List_creat(head,n);
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",&str);
if(!strcmp(str,"show"))
{
if(List_show(head))
printf("\n");
else
printf("Link list is empty\n");
continue;
}
if(!strcmp(str,"delete"))
{
scanf("%d",&a);
if(List_delete(head,a))
printf("delete OK\n");
else
printf("delete fail\n");
continue;
}
if(!strcmp(str,"insert"))
{
scanf("%d %d",&a,&b);
if(List_insrt(head,a,b))
printf("insert OK\n");
else
printf("insert fail\n");
continue;
}
if(!strcmp(str,"get"))
{
scanf("%d",&a);
if(b = List_get(head,a))
printf("%d\n",b);
else
printf("get fail\n");
continue;
}
}
return 0;
}
//头插法创建
void List_creat(Link head,int n)
{
Link r,p;
r = head;
for(int i=0;i<n;i++)
{
p = (Node*)malloc(sizeof(Node));
scanf("%d",&p->data);
p->next = r->next;
r->next = p;
}
}
//遍历链表
int List_show(Link head)
{
Link p;
int n=0;
p = head->next;
while(p)
{
n++;
printf("%d ",p->data);
p = p->next;
}
if(n==0)
return 0;
else
return 1;
}
//插入数据
int List_insrt(Link head,int i,int n)
{
Link p,t;
int j=0;
p = head;
while(p&&j<i-1)
{
p = p->next;
j++;
}
if(!p||j>i-1)
return 0;
t = (Link)malloc(sizeof(Node));
t->data = n;
t->next = p->next;
p->next = t;
return 1;
}
//删除数据
int List_delete(Link head,int i)
{
Link p,q;
p = head;
int j=0;
while(p->next&&j<i-1)
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1)
return 0;
q = p->next;
p->next = q->next;
free(q);
return 1;
}
//按位获取数据
int List_get(Link head,int i)
{
Link p;
p = head->next;
int j=1;
while(p&&j<i){
p =p->next;
j++;
}
if(!p||j>i)
return 0;
return p->data;
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复