Young87

当前位置:首页 >个人收藏

c语言链表操作的算法思想,算法2-8~2-11:链表的基本操作 (C语言代码)

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

解题思路:

定义结点:

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 

#include 

#include 

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

{

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

{

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

{

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

{

scanf("%d",&c[i]);

}

link *p=initLink(c,n);//初始化

int order_num;//命令_数量

scanf("%d",&order_num);

for(int j=0;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;

}

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 520晚上,我用python破解了前女友的加密文件,结果却发现。。。

下一篇: 【一鸣离职,左晖去世】互联网老兵给大家的三个建议

精华推荐