标签:函数 生成 new turn creat lis 效率 插入 while
链表和数组
数组的优点: 存取速度快 缺点: 1.需要连续很大的内存(数组创建的时候生成的内存地址是连续的) 2.插入和删除元素的效率很低
链表的优点:1.不需要连续很大的内存 2.插入和删除元素效率高(修改链(指针)就可以完成) 缺点:查找的时候效率低 (存储的时候排序)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.用结构体创建 包括数据域和指针域
链表的创建:可以用一个函数来创建然后返回头指针。(用malloc申请动态内存(堆) 因为创建完了该函数结束会自动释放内存)
struct Node*create_list(void){
	int len,i,val;      // 变量len是要创建节点个数         val用来存临时数据
	
	struct Node *pHead=(struct Node*)malloc(sizeof(struct Node));
	if(NULL==pHead){
		printf("分配失败\n");
		exit(-1);
	}
	
	struct Node*pTail=pHead;
	pTail->pNext=NULL;
	printf("请输入你要生成节点的个数:\n");
	scanf("%d",&len);
	
	for(i=0;i<len;i++){
		printf("请输入第%d个节点的数据:",i+1);
		scanf("%d",&val);
		
		struct Node*pNew=(struct Node*)malloc(sizeof(struct Node));
		if(NULL==pNew){
			printf("分配失败\n");
			exit(-1); 
		} 
		pNew->data=val;
		pTail->pNext=pNew;
		pNew->pNext=NULL;
		pTail=pNew;
	}
	return pHead;
}
链表的遍历
void traverse_list(struct Node* pHead){
	struct Node*p=pHead->pNext;
	while(NULL!=p){
		printf("%d\n",p->data);
		p=p->pNext;
	}
	return ;
}
链表的查找 (按序号查找)
struct Node* fine_list(struct Node* pHead,int k){
	struct Node*p=pHead;
	int i=0;
	while(p!=NULL&&i<k){
		p=p->pNext;
		i++;
	}
	if(i==k) return p;
	else return NULL;
}
链表的插入(1.把插入的指针指向要插入位置后面的指针 2.把要插入前面的指针指向插入的指针 顺序不能颠倒)和删除(类似改变指针连接关系 注意保存要删除的地址 不然会造成内存泄漏)
明天再写
19/12/21 00:30
标签:函数 生成 new turn creat lis 效率 插入 while
原文地址:https://www.cnblogs.com/cccczqccc/p/12075655.html