数据结构示例之单链表删除元素
来源:互联网 发布:数据手册 编辑:程序博客网 时间:2024/05/21 11:34
以下是”链表删除元素“的简单示例:
1. 用c语言实现的版本
#include<stdio.h>#include<stdlib.h>typedef char datatype;typedef structnode{datatype data;struct node *next;} listnode;typedef listnode *linklist;listnode *p;/* 创建链表,从表头插入新元素 */linklist createlist(void){char ch;linklist head;listnode *p;head = NULL;/*初始化为空*/printf("请输入字符序列: \n");ch = getchar();while (ch != '\n'){p = (listnode*)malloc(sizeof(listnode));/*分配空间*/p->data = ch;/*数据域赋值*/p->next = head;/*指定后继指针*/head = p;/*head指针指定到新插入的结点上*/ch = getchar();}return head;}/* 删除第i个节点 */int deletelist(linklist *head, int i){int j = 1;listnode * p, *r;p = *head;if (i == 1) //删除第1个结点{*head = p->next;free(p);return 1;}//删除第i个结点(i>1),寻找第i-1个结点 while (p && j<(i - 1)){p = p->next;++j;}if (!p || j>(i - 1)){return -1;}r = p->next;p->next = r->next;free(r);return 1;}int main(){linklist list, head;int i;/* 创建链表,从表头插入新元素 */list = createlist();head = list;printf("在删除前,输出链表中的元素\n");do{printf("%c", head->data);head = head->next;} while (head != NULL);printf("\n请输入要删除的结点位置(n>=1):");scanf("%d", &i);/* 删除第i个节点后的节点 */deletelist(&list, i);printf("在删除后,输出链表中的元素\n");do{printf("%c", list->data);list = list->next;} while (list != NULL);printf("\n");}
运行结果如下图所示:
0 0
- 数据结构示例之单链表删除元素
- 数据结构之删除线性表中的元素
- 数据结构单链表删除相同元素(int)
- 数据结构示例之查看链表元素是否存在
- 数据结构示例之根据位置和长度删除子字符串
- 数据结构——链表之单链表重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构之图的邻接表元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 前端,表单基础知识详解
- 简单的霓虹灯效果
- HDU 2061 Treasure the new start, freshmen!(GPA的计算)
- 深入理解Java HelloWorld
- Andorid小项目之--Animation四种动画的图片效果
- 数据结构示例之单链表删除元素
- 剑指offer-按之字形顺序打印二叉树
- Java开发工具_Eclipse导入项目要注意的小问题
- python经常忘的
- Anroid中View框架总结
- java使用资源文件实现程序的国际化
- 悦读:重新定义公司-谷歌是如何运营的
- 剑指Offer面试题6:重建二叉树 Java实现
- J2EE之Spring中Bean的基础配置