当前位置:网站首页 > 技术博客 > 正文

关系运算符有哪些

可以通过以下代码实现单

链表

基本操作

 #include <stdio.h> #include <stdlib.h>  // 定义 链表 节点结构 typedef struct Node { int data; // 数据域 struct Node* next; // 指针 域,指向下一个节点 } Node;  // 初始化 链表 void initLinkedList(Node head) { *head = NULL; }  // 头插法 建表 void createLinkedListHead(Node head) { int data; printf("输入节点数据,输入-1结束:"); while (1) { scanf("%d", &data); if (data == -1) { break; } Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = *head; *head = newNode; } }  // 尾插法 建表 void createLinkedListTail(Node head) { int data; printf("输入节点数据,输入-1结束:"); Node* tail = NULL; while (1) { scanf("%d", &data); if (data == -1) { break; } Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; if (*head == NULL) { *head = newNode; tail = newNode; } else { tail->next = newNode; tail = newNode; } } }  // 查找 节点 Node* findNode(Node* head, int target) { Node* p = head; while (p != NULL) { if (p->data == target) { return p; } p = p->next; } return NULL; }  // 插入 节点 void insertNode(Node head, int pos, int data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL;  if (pos == 0) { newNode->next = *head; *head = newNode; return; }  Node* p = *head; int count = 0; while (p != NULL && count < pos - 1) { p = p->next; count++; }  if (p == NULL) { printf("位置无效! "); return; }  newNode->next = p->next; p->next = newNode; }  // 删除 节点 void deleteNode(Node head, int data) { Node* p = *head; Node* prev = NULL;  // 删除 的是头节点 if (p != NULL && p->data == data) { *head = p->next; free(p); return; }  while (p != NULL && p->data != data) { prev = p; p = p->next; }  if (p == NULL) { printf("未找到要 删除 的节点! "); return; }  prev->next = p->next; free(p); }  // 求表长 int getLength(Node* head) { int len = 0; Node* p = head; while (p != NULL) { len++; p = p->next; } return len; }  // 打印 链表 void printLinkedList(Node* head) { Node* p = head; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf(" "); }  int main() { Node* head; initLinkedList(&head); createLinkedListTail(&head); printLinkedList(head);  int target; printf("输入要 查找 的节点数据:"); scanf("%d", &target); Node* result = findNode(head, target); if (result != NULL) { printf("找到了! "); } else { printf("未找到! "); }  int pos, data; printf("输入要 插入 的位置和数据:"); scanf("%d %d", &pos, &data); insertNode(&head, pos, data); printLinkedList(head);  printf("输入要 删除 的节点数据:"); scanf("%d", &target); deleteNode(&head, target); printLinkedList(head);  int length = getLength(head); printf(" 链表 长度:%d ", length);  return 0; } 

版权声明


相关文章:

  • linux系统的主要发行版本2025-02-05 18:00:59
  • linux检测cpu2025-02-05 18:00:59
  • textview设置文本换行2025-02-05 18:00:59
  • utf8mb4_bin2025-02-05 18:00:59
  • 代理的模式怎么做2025-02-05 18:00:59
  • 极点五笔拼音输入法下载2025-02-05 18:00:59
  • 编程语言c语言教程2025-02-05 18:00:59
  • java线程池最佳实践2025-02-05 18:00:59
  • 同步通信与异步通信有何不同2025-02-05 18:00:59
  • springmvc依赖包2025-02-05 18:00:59