何足道


私信TA

用户名:z3250921

访问量:6443

签 名:

看这,好吧,你也帅气了。

等  级
排  名 922
经  验 3475
参赛次数 2
文章发表 8
年  龄 0
在职情况 学生
学  校 聊城大学东昌学院
专  业 计算机科学与技术

  自我简介:

啦啦啦啦啦

TA的其他文章

     声明:此代码仍然可以改进,望诸位大佬积极修正!!!


解题思路:

   定义结点:

      typedef struct Link

      {

         struct Link *next;

         int elem;

     }link;   //这里我定义了一个结点
    

   定义函数:

     link *initLink(int *c,int n);//初始化数据,对数据进行赋值

     link *insertElem(link *p,int add,int elem);//插入    "  insert "

     link *delElem(link *p,int add);//删除    "  delete  "

     link *display(link *p);//显示    " show "


注意事项:

参考代码:

   

     #include <string.h>
   #include <stdio.h>
   #include <stdlib.h>
   typedef struct Link
   {
   	int elem;
   	struct Link *next;
   }link;
   
   link *initLink(int *c,int n);
   link *insertElem(link *p,int add,int elem);
   link *delElem(link *p,int add);
   link *display(link *p);
   
   
   
   link *initLink(int *c,int n)//初始化 
   {
   	link *p=(link*)malloc(sizeof(link));
   	link *temp=p;
   	for(int i=n-1;i>=0;i--)
   	{
   		link *a=(link*)malloc(sizeof(link));
   		a->elem=c[i];
   		a->next=NULL;
   		temp->next=a;
   		temp=temp->next;
	   }
	   return p;
   }
   
   
   link *insertElem(link *p,int add,int elem)//插入 
   {
	link *temp=p;
    int j=0;
    while(temp&&j<add-1)
    {
    	temp=temp->next;
    	++j;
	}
	if(!temp||j>add-1)
	{
		printf("insert fail\n");
		return p;
	}
	   link *c=(link*)malloc(sizeof(link));
	   c->elem=elem;
	   c->next=temp->next;
	   temp->next=c;
	   printf("insert OK\n");
	   return p;
	} 
	
	
	link *delElem(link *p,int add)//删除 
	{
	  link *temp=p;
      int j=0;
      while(temp->next&&j<add-1)
      {
        	temp=temp->next;
        	++j;
     	}
      if(!(temp->next)||j>add-1)
    	{
     	printf("delete fail\n");
     	return p;
        }
		link *del=temp->next;
    	temp->next=del->next;
    	free(del);
		printf("delete OK\n");
		return p;
	}
	
	link *getElem(link *p,int add)//获取读数 
	{
		link *temp=p;
        int j=0;
        while(temp->next&&j<add)
        {
        	temp=temp->next;
        	++j;
    	}
	    if(!(temp->next)||j>add)
	    {
	    	printf("get fail\n");
	    	return p;
		}
	     
		 printf("%d\n",temp->elem);
	    	return p;
	}
link *display(link *p)
{
	link *temp=p;
	 if(!(temp->next))
    {
    	printf("Link list is empty\n");
    	return p;
	}
	while(temp->next)
	{
		temp=temp->next;
		printf("%d ",temp->elem);
	}
	printf("\n");
	return p;
}
   int main()
   {
   	int n;
   	int c[100];
   	scanf("%d",&n);
   	char str[20];
   		char str1[]="get";
   	char str2[]="insert";
   	char str3[]="delete";
   	char str4[]="show";
   	int add=0;
   	int m_1,m_2;
   	for(int i=0;i<n;i++)
   	{
   		scanf("%d",&c[i]);
	   }
	   link *p=initLink(c,n);//初始化 
	   int order_num;//命令_数量 
	   scanf("%d",&order_num);
	   
	   for(int j=0;j<order_num;j++)
	   {
	   	scanf("%s",&str);
	   	if(strcmp(str,str1)==0)//获取 "get"
	   	{
	   		scanf("%d",&m_1);
	   		p=getElem(p,m_1);
		   }else if(strcmp(str,str2)==0)//插入 "insert"
		   {
		   	scanf("%d %d",&add,&m_2);
		   	insertElem(p,add,m_2);
		   }else if(strcmp(str,str3)==0)//删除 "delete"
		   {
		   	scanf("%d",&add);
		   	delElem(p,add);
		   }else if(strcmp(str,str4)==0)//显示 "show"
		   {
		   	display(p);
		   }
	   }
	   return 0;
   }


 

0.0分

2 人评分

  评论区

申请完空间之后一定要记得回收,好家伙以前年轻不懂事
2021-03-21 10:40:24
我这老代码看着真尴尬
2021-03-19 17:07:50
不错,可以通过,我优化了一下。
2020-02-20 20:20:12
  • «
  • 1
  • »