本文主要是介绍数据结构学习——单链表ADT(程序化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看了一点网上的代码,结合自己对链表的理解。将对链表常用的操作集合程序化如下:
#include<stdio.h>
#include<stdlib.h>typedef struct Node
{int Val;struct Node *next;
}List;List *list_add(List **p,int Val);//此处是二级指针
void List_Print(List *p);
List *list_insert(List **p,int Val,int i);//i为插入的位置 Val插入的值
List *list_remove(List **p,int i);//删除指定位置i的值int main()
{List *n=NULL;list_add(&n,0);list_add(&n,1);list_add(&n,2);list_add(&n,3);list_add(&n,4);list_insert(&n,5,3);list_insert(&n,6,2);list_remove(&n,2);list_remove(&n,3);List_Print(n);return 0;
}List *list_remove(List **p,int i)//删除指定位置i的值
{int count=0;List *q,*a;a=*p;if(p==NULL)return NULL;for(count=0;count<(i-2);count++){a=a->next;if(a==NULL)return NULL;}q=a->next;//后继元a->next=q->next;return *p;
}List *list_insert(List **p,int Val,int i)
{int count=0;List *q,*a;a=*p;if(p==NULL)return NULL;for(count=0;count<(i-2);count++){a=a->next;if(a==NULL)return NULL;}q=a->next;//后继元List *temp=(List *)malloc(sizeof(List));temp->next=q;temp->Val=Val;a->next=temp;return *p;
}List *list_add(List **p,int Val)//此处是二级指针
{if(p==NULL)return NULL;List *temp=(List *)malloc(sizeof(List));temp->next=*p;temp->Val=Val;*p=temp; //头指针移动到开始处 *P在此处的作用为头指针return *p;
}void List_Print(List *p)
{if(p==NULL)printf("list is empty\n");while(p){printf("%d\t",p->Val);p=p->next;}
}
这篇关于数据结构学习——单链表ADT(程序化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!