首页 > 代码库 > 链表(四)——带表头的单向链表
链表(四)——带表头的单向链表
1.带表头的单向链表
(1)不带表头的单向链表在实现插入和删除时必须区分头结点和其他节点的处理。
(2)使用带表头的单向链表的好处:不用考虑头结点的单独处理。
表头节点:数据域没有值,指针域指向单向链表中数据域含值的第一个结点。
(1)不带表头的单向链表在实现插入和删除时必须区分头结点和其他节点的处理。
(2)使用带表头的单向链表的好处:不用考虑头结点的单独处理。
表头节点:数据域没有值,指针域指向单向链表中数据域含值的第一个结点。
2.代表头的单向链表的基本操作
#include <stdio.h> #include <malloc.h> #define NULL 0 typedef struct node { int data; struct node *next; }ElemSN; ElemSN * creat_link(int ms); //创建一个带表头的链表 void print_link(ElemSN *head); //输出单向链表 void delete_node(ElemSN *head, int x); //删除结点 void insert_node(ElemSN *head, int x); //插入结点 void clear_link(ElemSN *head); //删除链表 int main() { ElemSN *head; int ms, x; printf("Please input node number:"); scanf("%d", &ms); head = creat_link(ms); //创建链表 print_link(head); printf("Please input delete node:"); scanf("%d", &x); delete_node(head, x); //删除结点 print_link(head); printf("Please input insert node:"); scanf("%d", &x); insert_node(head, x); print_link(head); clear_link(head); print_link(head); } ElemSN * creat_link(int ms) //带表头的单向链表除了头结点其余结点 //创建方法一致,所以不用逆向创建 { ElemSN *h = NULL, *p; int i, x; h = p = (ElemSN *)malloc(sizeof(ElemSN)); for(i = 0; i < ms; i++) { p->next = (ElemSN *)malloc(sizeof(ElemSN)); //创建新结点 printf("Please input node data:"); scanf("%d", &x); p->next->data = http://www.mamicode.com/x; //新结点初始化>链表(四)——带表头的单向链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。