单链表[建表、输出、插入、删除、逆序]
来源:互联网 发布:阿里云子账号登录 编辑:程序博客网 时间:2024/06/04 18:07
面试的时候老是被问到单链表知识,索性总结一下。
这篇文章主要总结了单链表的创建、输出、逆序、插入和删除。
逆序原理图:
源代码:
#include <iostream>using namespace std;typedef int ElemType;//数据类型模板typedef struct Node//结点{ElemType data;struct Node *next;}Node;typedef struct Node * LinkList;//////////建表Node* creat_Link(Node *head){int x;Node *p,*q;head=(Node *)malloc(sizeof(Node));head->next=NULL;q=head;cin>>x; while(x!=999){ p=(Node *)malloc(sizeof(Node)); p->data=x;p->next=NULL; q->next=p; q=p;cin>>x;}return head;//建完表后返回头结点}//////////输出void output_Link(Node * head){ if(head==NULL){cout<<"空链表!"<<endl;return;}Node *q;q= head->next;while(q!=NULL){cout<<q->data<<" ";q=q->next;}}//////////逆序Node * reverse_Link(Node * head){Node *current,*p;if(head==NULL){cout<<"空链表!"<<endl;return NULL;}current=head->next;while(current->next != NULL){p=current->next;current->next = p->next;p->next = head->next;head->next = p;}return head;}//////////插入Node * insert_Link(Node *head,int i, ElemType e)//i位置前插入值e{Node *q,*iq;q= head->next;for(int j=1;j<i;j++){iq=q;q=q->next;} Node *s;//在iq处插入S节点//s=(LinkList)malloc(sizeof(Node)); //生成新节点 s=(Node *)malloc(sizeof(Node)); s->data=e;s->next=iq->next;iq->next=s; return head;}//////////删除Node * delete_Link(Node *head,int i)//删除位置i{if(i==1)head = head ->next; else{Node *p,*q;q= head->next;for(int j=1;j<i;j++){ p=q;q=q->next;//找出删除的q位置}p->next=q->next;delete q;//free(q);}return head;}int main(){Node *head=NULL;//creat_Link(head);Node * m=creat_Link(head);//建表cout<<"初始链表为:"<<endl;output_Link(m);//输出原链表cout<<endl<<"逆序链表为:"<<endl;Node * n=reverse_Link(m);//逆序output_Link(n);//输出逆序链表cout<<endl<<"插入输出为:"<<endl;Node * x=insert_Link(n,3,100);//下标1开始,3前插入100output_Link(x);cout<<endl<<"删除输出为:"<<endl;Node * y=delete_Link(n,2);//下标1开始,删除2位置的结点output_Link(y);cout<<endl;return 0;}
测试结果:
0 0
- 单链表[建表、输出、插入、删除、逆序]
- 单链表创建及其插入,删除,逆序
- 单链表的创建,插入,删除以及逆序
- 链表的插入、删除、逆序打印、输出倒数第N个、链表逆序
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C++单链表的创建插入删除以及逆序操作
- 单链表创建-遍历-排序-插入-删除-逆序操作
- 单链表的创建, 删除, 插入, 输出
- 单链表逆序或者逆序输出
- 单链表的基本操作,正序/逆序建表(尾插法/头插法)、计算单链表长度、输出单链表内容、插入、删除,给出完整代码
- 单链表建立、插入、逆序
- 链表的创建,插入,删除,逆序
- 无表头的插入、删除、逆序
- 用链表形式存储一个字符串,插入、删除某个字符,最后按正序、逆序两种方式输出字符串
- 单链表的逆序输出
- 单链表的逆序输出
- 如何逆序输出单链表?
- SD-如何在SAP标准IDOC中增加自定义字段传输
- Android应用在不同版本间兼容性处理
- 关于自定义View思考与实践1
- JavaWeb文件上传图片到非工程目录,然后前端访问
- 判断鼠标从什么方向进入元素
- 单链表[建表、输出、插入、删除、逆序]
- 使用NPOI根据DataSet(DataTable)创建Excel
- Linux信号(signal) 机制分析
- s5pv210 的中断向量表及中断在Linux下虚拟地址和物理地址的定义
- java中字符串替换-String.replace StringreplaceAll
- 第三章——操作符
- php多态
- linux下性能测试工具--ab测试
- 远程连接Oracle的四种方法