数据结构-线性表(代码,巨详细

时间:2024-10-12 08:14:36

单链表

不带头节点的单链表(基本操作)

1. 初始化
//单链表不带头结点 
#include<>
#include<>
 
typedef struct LNode{
   
	int data;
	struct LNode *next;
}LNode, * LinkList;
 
 
LinkList initList(LinkList list){
   
	list=NULL;
	return list;
}
2. 插数据
//插数据(第一个位置)(指定位置)
LinkList insertFirst(LinkList list,int index,int data){
   
	if(index == 1){
   
		LNode *newNode = (LNode *)malloc(sizeof(LNode));
		if(newNode==NULL){
   
			return list;
		}
		(*newNode).next = list;
		list = newNode;
		(*newNode).data = data;
		return list;
	}	
	return list;
}
 
//插数据(指定位置) 
int insertList(LinkList list,int index,int data){
   
	LNode *tmp=list;
	int j=1;	
	if(list==NULL){
   
		return 0;
	}	
	if(index<2){
   
		return 0;
	} 
	while(tmp!=NULL&&j<index-1){
   
		
		tmp=(*tmp).next;		
		j++;
	}
	
	if(tmp==NULL){
   
		return 0;
	}
 
	LNode *newNode=(LNode *)malloc(sizeof(LNode));
	if(newNode==NULL){
   
		return 0;
	}
	(*newNode).data=data;
	(*newNode).next=(*tmp).next;
	(*tmp).next=newNode;	
	return 1;
}
 
//插数据(指定结点后)
int insertNextNode(LNode *p,int data){
   
	if(p==NULL){
   
		return 0;
	}	
	LNode *newNode=(LNode *)malloc(sizeof(LNode));
	if(newNode==NULL){
   
		return 0;
	}
	(*newNode).data=data;
	(*newNode)