博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表的基本操作
阅读量:4135 次
发布时间:2019-05-25

本文共 2573 字,大约阅读时间需要 8 分钟。

 

// 单链表.cpp : 单链表的相关操作(两种方法的建立、两种方法的查询、求长、打印、插入、删除、逆序反转)。#include "stdafx.h"#include
using namespace std;typedef struct node{ char data; struct node *next;}ListNode;typedef ListNode * LinkList;bool isvalue=true;LinkList creatListF(void)//头插入法{ LinkList head=NULL; ListNode *s; char ch; cout<<"请输入字符串并回车,则头插入法形成的单链表如下:"<
data=ch; s->next=head; head=s;//head要不断向前移动,一直指着最前线,这样存储的数据与输入的数据顺序相反 ch=getchar(); } return head;}LinkList creatListR(void)//尾插入法{ LinkList head=NULL,r=NULL;//在创建时,要将head设置为NULL,否则内存出错;LinkList head这样声明只是指向一个未知的值 ListNode *s; cout<<"请输入字符串并回车,则尾插入法形成的单链表如下:"<
data=ch; if(head==NULL) head=s;//新结点插入空表 else r->next=s;//如果是头结点,不执行这一步,头结点特别处理 r=s;//将指针r后移,使其一直指向最后一个结点 if(r!=NULL) r->next=NULL;//对于非空表,将尾结点指针域置空,防止内存读写错误 ch=getchar(); } /*while(cin>>ch) { s=new ListNode(); if(s==NULL) return 0; s->data=ch; if(head==NULL) head=s; else r->next=s; r=s; if(r->next!=NULL) r->next=NULL; }*/ return head;}ListNode GetNodeByPos(LinkList head,int pos){ int i=1; while(head&&i
next; i++; } if(i==pos) return *head;}ListNode GetNodeByKey(LinkList head,char key){ while(head&&(head->data)!=key) head=head->next; if(head&&head->data==key) return *head;}void print(LinkList head){ while(head!=NULL) { cout<
data; head=head->next; if(head!=NULL) cout<<"——> "; } cout<
next; len++; } return len; }void DeleteNode(LinkList &head,char value){ ListNode *ptemp,*qtemp,*current=head; while(current) { ptemp=current->next; if(current->data==value)//第一种情况:头指针所包含的数据恰好符合要求 { qtemp=current; current=current->next;//头指针下移一个数据 free(qtemp);//原先的头指针删掉 isvalue=false; } else { if(ptemp!=NULL&&ptemp->data==value) { current->next=ptemp->next; free(ptemp); isvalue=false; } else current=current->next; } } if(isvalue) cout<
<<"不在单链表中"<
data=value; cout<<"请输入插入方式:0——头部;1——尾部;2——中间。"<
>pos; if(pos==2) { cout<<"请输入要出入的位置(插入字符位于该位置的后面):"; cin>>tag; } switch(pos) { case 0: newNode->next=head; head=newNode; break; case 1: ptemp=head; while(ptemp->next!=NULL) ptemp=ptemp->next; ptemp->next=newNode; newNode->next=NULL; break; case 2: ptemp=head; while(index
next; } if(index!=tag) exit(-1); newNode->next=ptemp->next; ptemp->next=newNode; break; default: cout<<"输入的出入方式不合法。"<
next; while(p2!=NULL) { p3=p2->next; p2->next=p1; p1=p2; p2=p3; } head->next=NULL; head=p1;}int _tmain(int argc, _TCHAR* argv[]){ /*LinkList head=creatListF();*/ LinkList head=creatListR(); print(head); /*ListNode node=GetNodeByPos(head,2); cout<<"在单链表中按位置查找:"<
<

 

部分内容参考自下面两个网站,在此表示感谢:

 

转载地址:http://gbsvi.baihongyu.com/

你可能感兴趣的文章
对话周鸿袆:从程序员创业谈起
查看>>
web.py 0.3 新手指南 - 如何用Gmail发送邮件
查看>>
web.py 0.3 新手指南 - RESTful doctesting using app.request
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>