单链表常见操作
来源:互联网 发布:em算法图像分割 编辑:程序博客网 时间:2024/06/04 23:35
编译环境:VS2008#include<stdio.h>#include<stdlib.h>typedef char DataType;typedef struct ListNode{DataType data;struct ListNode * next;}ListNode, * LinkList;/*创建一个空的带头结点的链表*/LinkList createList(){LinkList head;head = (ListNode *)malloc(sizeof(ListNode));if(!head)return NULL;head->next = NULL;return head;}/*创建一个非空的链表,头插法*/int createListByHead(LinkList &head){//这里用的是引用head = (ListNode *)malloc(sizeof(ListNode));if(!head)return -1;head->next = NULL;ListNode *p = head;char ch;while((ch=getchar())!='\n'){p = (ListNode *)malloc(sizeof(ListNode));p->data = ch;p->next = head->next;head->next = p;}return 1;}/*头插法建立链表,返回链表的头指针*/LinkList createListBYHead1(){LinkList head = createList();LinkList p;char ch;while((ch=getchar())!='\n'){p = (ListNode *)malloc(sizeof(ListNode));p->data = ch;p->next = head->next;head->next = p;}return head;}/*添加节点*/int add(LinkList &head,DataType value){ListNode *p = head;while(p->next){p = p->next;}LinkList insertNode = (ListNode *)malloc(sizeof(ListNode));insertNode->data = value;insertNode->next = p->next;p->next = insertNode;return 1;}/*return node by location*/LinkList get(LinkList &head,int location){ListNode *p = head;for(int i=0;i<location;i++){if(!p->next)return NULL;p = p->next;}return p;}int del(LinkList &head,int location){ListNode *p = head;if(location<1)return -1;for(int i=0;i<location-1;i++){//将p移到要删除节点的前驱if(p->next==NULL)return -1;//位置不合法p = p->next;}/*删除节点不存在,有可能删除节点的前驱存在,但要删除节点位置的前驱为终端节点是也不合法*/if(p->next)return -1;ListNode *q = p->next;//if(q->next==NULL)//如果要删除的节点是最后一个节点{free(q);p->next = NULL;}else{p->next = q->next;free(q);}return 1;}void printList(LinkList &head){ListNode *p = head;while(p->next){p = p->next;//printf("%c",p->data);putchar(p->data);putchar(' ');}}
0 0
- 单链表常见操作
- 单链表常见操作
- 单链表常见操作
- 单链表常见操作
- 单链表常见操作
- 单链表常见操作
- C语言单链表常见操作
- 面试专题 单链表常见操作
- C语言单链表常见操作系列
- 数据结构之单链表常见操作 C
- 常见公历日期操作
- 常见的SREng操作
- 常见的数据库操作
- 字符串常见操作
- TableLayoutPanel 常见操作
- mysql常见操作
- mysql常见操作
- 常见电脑操作快捷键
- wireshark 高级实用技巧
- android软键盘把页面顶上去
- Java多线程编程总结笔记——03概念与原理
- ThinkPHP3.2对MongoDB的基本操作
- php workplace 权限问题
- 单链表常见操作
- javal连接mysq数据库
- 禁止在.net framework中执行用户代码。启用“clr enabled” 配置选项
- 如何选择运放?
- 七牛用图片处理接口处理后质量控制
- 网站打开速度慢的深层次原因分析
- 通过dom4j进行数据读取xml文件进行数据的读取操作
- LeetCodeOJ_189_Rotate Array
- 解决winRAR弹出广告问题