单链表基本操作代码

本文详细介绍了单链表的基本操作,包括插入节点、删除节点、查找节点等核心代码实现,帮助读者理解链表数据结构及其操作。
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LNode{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;

 //头插法建立单链表
LinkList Link_HeadInsert(LinkList &L){  
	LNode *s;
	int x;
	L = (LinkList)malloc(sizeof(LNode)); 
	L->next =NULL; //结构体用".",结构体指针用"->"
	scanf("%d",&x);
	while(x != 9999){
		s = (LNode*)malloc(sizeof(LNode));
		s->data = x;
		s->next = L->next;
		L->next = s;
		scanf("%d",&x);
	}
	return L;
}

//尾插法建立单链表
LinkList List_TailInsert(LinkList &L){ 
	int x;
	L = (LinkList)malloc(sizeof(LNode));
	LNode *s,*r=L;
	scanf("%d",&x);
	while(x != 9999){
		s = (LNode*)malloc(sizeof(LNode));
		s->data = x;
		r->next = s;
		r=s;
		scanf("%d",&x);
	}
	r->next = NULL;
	return L;
}

//输出链表所有数据
void PrintList(LinkList L){
	LNode *p;
	p = L->next;
	while(p!=NULL){
		printf("%d\t",p->data);
		p = p->next;
	}
	printf("\n");
}


//按节点序号来查找节点值
LNode *GetElem(
单链表是一种线性数据结构,每个节点包含一个值和指向下一个节点的指针。在C语言中,我们可以创建一个简单的单链表结构体,包括头结点和基本的操作函数,如插入、删除和遍历等。这里是一个基础的单链表实现示例: ```c #include <stdio.h> #include <stdlib.h> // 定义链表节点结构 typedef struct ListNode { int data; struct ListNode* next; } ListNode; // 创建一个新的链表节点 ListNode* createNode(int value) { ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); if (newNode != NULL) { newNode->data = value; newNode->next = NULL; } return newNode; } // 插入节点到链表头部 void insertAtBegin(ListNode** head, int value) { ListNode* newNode = createNode(value); if (*head == NULL) { *head = newNode; } else { newNode->next = *head; *head = newNode; } } // 删除指定值的节点(仅删除第一个找到的) void deleteNode(ListNode** head, int value) { if (*head == NULL) { return; } if ((*head)->data == value) { ListNode* temp = *head; *head = (*head)->next; free(temp); return; } ListNode* current = *head; while (current->next != NULL && current->next->data != value) { current = current->next; } if (current->next != NULL) { ListNode* temp = current->next; current->next = current->next->next; free(temp); } } // 遍历并打印链表 void printList(ListNode* head) { ListNode* temp = head; while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } printf("\n"); } int main() { // 初始化空链表 ListNode* head = NULL; // 插入节点 insertAtBegin(&head, 5); insertAtBegin(&head, 3); insertAtBegin(&head, 7); // 打印链表 printf("Original list: "); printList(head); // 删除节点 deleteNode(&head, 5); // 再次打印链表 printf("After deleting 5: "); printList(head); return 0; } ``` 这个例子展示了如何在C语言中创建一个单链表,以及执行插入、删除和遍历的基本操作。注意,这只是一个基础的实现,并未处理错误情况,实际使用时需要增加错误检查。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值