数据结构实现单链表1.初始化 2.清空 3.求链表长度 4.遍历链表(设为输出元素) 5.从链表中查找与给定元素值相同的元素在表中的位置 6.向链表中插入指定的元素 7. 从链表中删除指定的元素 代码
时间: 2024-05-03 12:19:35 浏览: 127
以下是基于C语言实现的单链表代码:
```c
#include <stdio.h>
#include <stdlib.h>
//定义链表节点
typedef struct Node {
int data;
struct Node* next;
} Node;
//初始化链表
Node* initList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
//清空链表
void clearList(Node* head) {
Node* p, * q;
p = head->next;
while (p) {
q = p->next;
free(p);
p = q;
}
head->next = NULL;
}
//求链表长度
int getLength(Node* head) {
int len = 0;
Node* p = head->next;
while (p) {
len++;
p = p->next;
}
return len;
}
//遍历链表
void traverseList(Node* head) {
Node* p = head->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
//查找元素位置
int findElement(Node* head, int value) {
int pos = 0;
Node* p = head->next;
while (p) {
pos++;
if (p->data == value) {
return pos;
}
p = p->next;
}
return -1;
}
//插入元素
void insertElement(Node* head, int value, int pos) {
Node* p = head;
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
while (pos > 0 && p) {
pos--;
if (pos == 0) {
newNode->next = p->next;
p->next = newNode;
}
p = p->next;
}
}
//删除元素
void deleteElement(Node* head, int value) {
Node* p = head;
Node* q;
while (p->next) {
if (p->next->data == value) {
q = p->next;
p->next = q->next;
free(q);
return;
}
p = p->next;
}
}
int main() {
Node* head = initList();
insertElement(head, 1, 1);
insertElement(head, 2, 2);
insertElement(head, 3, 3);
insertElement(head, 4, 4);
insertElement(head, 5, 5);
printf("链表元素为:");
traverseList(head);
printf("链表长度为:%d\n", getLength(head));
int pos = findElement(head, 3);
if (pos == -1) {
printf("元素不存在!\n");
}
else {
printf("元素3在链表中的位置为:%d\n", pos);
}
deleteElement(head, 4);
printf("删除元素4后,链表元素为:");
traverseList(head);
clearList(head);
printf("清空链表后,链表元素为:");
traverseList(head);
return 0;
}
```
这里的代码实现了单链表的初始化、清空、求链表长度、遍历、查找、插入和删除操作。
阅读全文