编程实现单向链表的基本操作: 1.插入元素 2.删除元素 3.获取第i个结点的数据元素 4.判断元素是否存在-----前面4个已提供源码参考 5.获取某个元素的下一个元素;NextElem(L, cur_e, &next_e);
时间: 2024-05-27 10:10:58 浏览: 90
next_e)
//定义单向链表结点结构体
typedef struct Node{
int data;
struct Node* next;
}Node;
//定义单向链表结构体
typedef struct List{
Node* head;
}List;
//初始化单向链表
void InitList(List *L){
L->head = NULL;
}
//插入元素
void Insert(List *L, int data){
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if(L->head == NULL){
L->head = newNode;
}else{
Node* p = L->head;
while(p->next != NULL){
p = p->next;
}
p->next = newNode;
}
}
//删除元素
void Delete(List *L, int data){
Node* p = L->head;
Node* prev = NULL;
while(p != NULL){
if(p->data == data){
if(prev == NULL){
L->head = p->next;
}else{
prev->next = p->next;
}
free(p);
break;
}
prev = p;
p = p->next;
}
}
//获取第i个结点的数据元素
int GetElem(List *L, int i){
Node* p = L->head;
int j = 1;
while(p != NULL && j < i){
p = p->next;
j++;
}
if(p == NULL || j > i){
printf("第%d个结点不存在\n", i);
return -1;
}
return p->data;
}
//判断元素是否存在
int IsExist(List *L, int data){
Node* p = L->head;
while(p != NULL){
if(p->data == data){
return 1;
}
p = p->next;
}
return 0;
}
//获取某个元素的下一个元素
int NextElem(List *L, int cur_e, int *next_e){
Node* p = L->head;
while(p != NULL){
if(p->data == cur_e){
if(p->next != NULL){
*next_e = p->next->data;
return 1;
}else{
printf("该元素没有下一个元素\n");
return 0;
}
}
p = p->next;
}
printf("该元素不存在\n");
return 0;
}
阅读全文