对单链表的相关操作
来源:互联网 发布:淘宝卖家账号 编辑:程序博客网 时间:2024/05/20 12:24
单链表的学习是数据结构中最基本的知识,这个例子是我现实的一个单链表,并对这个单链表执行一系列的操作。
下图是实现的截图:
下面给出实现的C++代码:
#include <cstdlib>#include <iostream>using namespace std;typedef struct Lnode{int data;struct Lnode *next; }LNode;int Get_i(LNode *L){cout<<"输入查找的是第几个元素"; int a,i=1;LNode *k=L;cin>>a;while(i<=a&&k->next!=NULL){i++;k=k->next; }cout<<"第"<<a<<"个元素是"<<k->data<<endl; }int Get_value(LNode *L){cout<<"输入查找元素的值是:";int count=1,x;LNode *k=L;cin>>x;while(k->next->data!=x&&k->next!=NULL){count++;k=k->next; }cout<<"所查找的元素"<<x<<"是第"<<count<<"个"<<endl; }void Insert(LNode *L){cout<<"输入需要插入数据的位置:";int i,j=1,k; //i是插入的位置 ,k是插入的数据 LNode *p,*q,*r;r=L;p=L;cin>>i;cout<<" "<<"需要插入的数据是:";cin>>k; while(j<i){p=p->next;j++;}q=(LNode*)malloc(sizeof(LNode));q->data=k;q->next=p->next;p->next=q;cout<<"现在的链表中数据是"<<endl;while(r->next!=NULL){cout<<r->next->data<<" ";r=r->next; } }void Delete_i(LNode *L){cout<<"输入需要删除数据的位置:";int i,j=0;cin>>i;LNode *p=L,*q,*r;r=L;while(j<i){j++;q=p;p=p->next; }q->next=p->next;free(p);cout<<"现在的链表中数据是"<<endl;while(r->next!=NULL){cout<<r->next->data<<" ";r=r->next; } cout<<endl; }void Delete_value(LNode *L){cout<<"输入需要删除数据的值:";int x;cin>>x;LNode *p=L,*q,*r=L;while(p->next->data!=x){q=p;p=p->next; }q=p;p=p->next; q->next=p->next;free(p);cout<<"现在的链表中数据是"<<endl;while(r->next!=NULL){cout<<r->next->data<<" ";r=r->next; } cout<<endl; }void Join(LNode *L){ int x; LNode *head,*p,*q,*r; head=(LNode*)malloc(sizeof(LNode)); head->next=NULL; q=head; cout<<"请输入数据建立另一个链表并同样以输入数字0为结束标志:"<<endl; while(1) { cin>>x; if(x==0) break; else { p=(LNode*)malloc(sizeof(LNode)); p->data=x; p->next=q->next; //采用尾插法,正序输出链表中数据 q->next=p; q=p; } } cout<<"第二个链表存数为:"<<endl; r=head; while(r->next!=NULL) { cout<<r->next->data<<" "; r=r->next; } cout<<endl; LNode *a,*b; a=L; b=L; while(a->next!=NULL) { a=a->next; } a->next=head->next; free(head); cout<<"现在的链表中数据是"<<endl; while(b->next!=NULL) { cout<<b->next->data<<" "; b=b->next; } cout<<endl; } int main(int argc, char *argv[]){ int x; LNode *head,*p,*q,*r; head=(LNode*)malloc(sizeof(LNode)); head->next=NULL; q=head; cout<<"请输入数据建链表并以输入数字0为结束标志:"<<endl; while(1) { cin>>x; if(x==0) break; else { p=(LNode*)malloc(sizeof(LNode)); p->data=x; p->next=q->next; //采用尾插法,正序输出链表中数据 q->next=p; q=p; } } cout<<"链表存数为:"<<endl; r=head; while(r->next!=NULL) { cout<<r->next->data<<" "; r=r->next; } cout<<endl; cout<<"************************************************"<<endl; cout<<"0:退出系统"<<endl; cout<<"1:按位置查找元素"<<endl; //Get_i(head); cout<<"2:按值查找元素"<<endl; //Get_value(head); cout<<"3: 执行插入操作"<<endl; //Insert(head); cout<<"4: 按位置删除元素"<<endl; //Delete_i(head); cout<<"5: 按值删除数据"<<endl; //Delete_value(head); cout<<"6: 建立一个新的链表并与前一个链表连接"; //Join(head); cout<<endl<<"************************************************"<<endl; int t; do{ cout<<"请输入选项执行相应的操作:"; cin>>t; switch(t) { case 0: cout<<"***********退出系统************"<<endl; break; case 1: Get_i(head); break; case 2: Get_value(head); break; case 3: Insert(head); break; case 4: Delete_i(head); break; case 5: Delete_value(head); break; case 6: Join(head); break; default : cout<<"ERROR"<<endl; break; } }while(t!=0); system("PAUSE"); return EXIT_SUCCESS;}
- 对单链表的相关操作
- 对窗口的相关操作
- 对已有数据表的相关操作
- 对缓存相关的操作类
- C#对Excel的相关操作
- linux 中对文件的相关操作
- .net 对文件的相关操作
- python对json的相关操作
- python对json的相关操作
- JQuery对CheckBox的一些相关操作
- JQuery对CheckBox的一些相关操作
- Python对Json的相关操作
- Qt中对坐标轴的相关操作
- jquery对select的相关操作说明
- js对微信的相关操作
- js对数组的相关操作
- JQuery对CheckBox的一些相关操作
- JQuery对CheckBox的一些相关操作
- php锁表
- Sun ONE 创建域时,创建成功,却找不到域的路径
- java中包的使用
- 【php】二维数组去除重复值和array_unique函数
- Python 之 BNUOJ代码抓取器
- 对单链表的相关操作
- 习题2-2,水仙花数
- AMQP规范-1.介绍
- 2013寒假练习 1027 一个人的旅行 1028 Constructing Roads 1032 Trees Made to Order
- LWIP 无OS RAW-API 函数
- 数据结构--二叉树的创建和相关操作
- 习题2-3,韩信点兵
- java 汉字字典,获取汉字拼音,拼音首字母,五笔,笔画,笔画顺序
- 标准库容器 vector中 string的字符处理。