栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言链表模板

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言链表模板

前言

C语言链表模板
备用


节点
 typedef struct node{
 	int data;
 	struct node* next;
 }Node, *Link;
数组转链表
Link ArrToLL_H(Link head, int a[],int n){
 	head =(Link)calloc(1,sizeof(Node));
 	
 	for(int i=0;i
 		Link node = (Link)calloc(1,sizeof(Node));//temp!!!
 		node->data = a[i];//data
 		node->next = head->next;//next
 		head->next = node;//node
	 }
	 return head;
 }
 
 Link ArrToLL_R(Link head, int a[],int n){
 	head =(Link)calloc(1,sizeof(Node));
 	Link p = head;
 	
 	for(int i=0;i
 		Link node = (Link)calloc(1,sizeof(Node));//temp!!!
 		node->data = a[i];//data
 		node->next = p->next;//next
 		p->next = node;//node
 		
 		p = node;//(move p) p = p->next;
	 }
	 return head;
 }
 
遍历
void Traverse(Link head){
 	Link p = head->next;

	while(p){
		printf("%dt",p->data);
		p = p->next;//(move) 存储空间不一定连续,不可 p++ 后移。		 
	}
 }
 
清除释放
void ClearLL(Link head){
 	 Link p;
 	 
	 while(head->next){
	 	p = head;
	 	head = head->next;
	 	free(p);
	 }
	 free(head);
 }
长度
 int Length(Link head){
 	Link p = head;
 	int count = 0;
 	
 	while(p){
 		p = p->next;
		 count ++;
	 }
	 
	 return (count-1);//除去head 
 }
查询
void Query(Link head,int x){
 	Link p = head->next;
 	int flag = 0;//存在性
 	int count = 0;
 	int i;
	  
 	while(p){
 		count ++;
 		
 		if(p->data == x){
 			i = count;
 			flag = 1;
            break;
		 }
		 
 		p = p->next;
	 }
	 
	  if(flag){
	  	printf("n存在,位于第%d个节点。",i);
	  } else{
	  	printf("n不存在。");
	  }
 }
增加
 void Insert(Link head,int i,int x){
 	Link p = head;
 	int count = 0;
 	int flag = 0;
 	
 	while((p != NULL) && (count < i- 1)){// i~ 第几个节点 
 		p = p->next;
 		count ++;
	 }
	 
	 if(p == NULL) flag = 0;
	 else{
	 	Link node =(Link)calloc(1,sizeof(Node));
	 	node->data = x;
	 	node->next = p->next;
	 	p->next = node;
	 	
	 	flag = 1;
	 } 
	 
	 if(flag) printf("n插入指定位置成功!n");
	 else  printf("n插入指定位置失败。n");
 	
 }

 void add(Link head,int e){ 
 	Link p = head;
 	Link q = (Link)malloc(sizeof(Node));
 	while(p->next){ //move to rear
 		p = p->next;
	 }
	 
 	q->data = e;
 	q->next = p->next;
 	p->next = q;
 	
 }
输入数据处理成链表
Link NewLL_H(Link head,Link node){
 	head = (Link)calloc(1,sizeof(Node));
 	int flag = 1;
 	int x;
 	 
 	printf("请输入:n");
 	while(flag){
 		node = (Link)calloc(1,sizeof(Node));
 		
 		scanf("%d",&x);//data
 		node->data = x;
 		node->next = head->next;
 		head->next = node;
 		printf("还要继续输入吗?(按0停止输入)   ");
 		scanf("%d",&flag);
	 }
	 return head;
 }
 
int main(){
 	Link node;
 	Link head;
    head = NewLL_H(head,node); 
    
    ......
        
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号