单向链表
来源:互联网 发布:上海定做衬衫 知乎 编辑:程序博客网 时间:2024/06/05 17:21
单向链表:链表头不包含有效数据,每个节点的next指向下一个节点,最后一个节点的next指向NULL,单向链表的操作只允许一个方向。
节点数据结构:
typedef int datatype;typedef struct linklist{datatype data;struct linklist *next;}singlelist,*psinglelist;
初始化单链表头结点:
void SingleList_Init(psinglelist *Head) {*Head = (psinglelist)malloc(sizeof(singlelist));if(*Head == NULL){perror("malloc");exit(1);}(*Head)->next = NULL;}
int SingleList_InsertTail(psinglelist Head,psinglelist New){psinglelist node;if(Head==NULL){perror("psinglelist Head error");return -1;}if(Head->next==NULL){Head->next = New;New->next = NULL;}else{/* 使node走到尾节点 */for( node = Head->next; node->next != NULL; node = node->next);node->next = New;New->next = NULL;}return 0;}
从头部插入节点:
int SingleList_InsertHead(psinglelist Head,psinglelist New){psinglelist node;if(Head==NULL){perror("psinglelist Head error");return -1;}New->next = Head->next;Head->next = New;return 0;}
创建n个节点:
int SingleList_Create(psinglelist Head,int n){int i;psinglelist node;if(Head==NULL){perror("psinglelist Head error");return -1;}for(i = 0; i < n; i++){node = (psinglelist)malloc(sizeof(singlelist));if(node == NULL){perror("malloc");exit(1);}printf("请输入第%d个节点的数据:",i+1);scanf("%d",&node->data);SingleList_InsertTail(Head,node);}}
删除指定数据的节点:
void SingleList_Delete(psinglelist Head,datatype data){psinglelist pPre; /* 用于保存待删除节点的上一个节点 */psinglelist H = Head;while(NULL!=Head->next){pPre = H; /* 先保存当前节点 */H = H->next; /* 指向下一个节点 *//* 找到要删除的节点 */if(H->data == data){/* 如果这个是链表的尾节点 */if(H->next==NULL){pPre->next = NULL;free(H);}else{pPre->next = H->next;free(H);}printf("删除节点成功\n");return;}}printf("没有找到该节点!\n");}
遍历单向链表:
int SingleList_each(psinglelist Head){psinglelist H;if(Head==NULL){perror("psinglelist Head error");return -1;}printf("链表数据:");for(H = Head->next; H != NULL; H = H->next){printf(" %d",H->data);}printf("\n");}
int main(void){psinglelist list;datatype data;SingleList_Init(&list);SingleList_Create(list, 5);SingleList_each(list);printf("请输入删除的数据:");scanf("%d",&data);SingleList_Delete(list,data);SingleList_each(list);}
实例效果:
阅读全文
1 0
- 单向链表
- 单向链表倒序
- 单向链表
- 单向链表逆转
- 逆转单向链表
- 单向链表反转
- 单向链表
- 单向链表(ZT)
- 反转单向链表
- 单向链表反转
- 单向链表
- 创建单向链表
- 单向链表反转
- 单向链表
- 单向链表
- 单向链表
- 单向链表
- C++ 单向链表
- SpringMVC用InitBinder注解实现表单多对象精准绑定接收
- Linux MAC 地址与报错eth0 unknown interface no such device
- Java设计模式介绍
- IO流--练习(2)
- Java多线程-通过线程的中断来深入学习interrupt方法,Volatile关键字
- 单向链表
- Java【关于SSM框架体会和小总结】
- Android 自定义Gridview 解决RecyclerView布局适应问题
- 【服务器架构】十张图带你了解大型网站架构
- 工作笔记----------<一>
- 使用Python3计算RTSP的Response值
- 购物车
- 49. Group Anagrams
- 如何写好java代码注释