Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- //typedef struct LinkNode{
- // ElemType data; //节点中存放的数值类型
- // struct LinkNode *next; //节点中存放的下一节点的指针
- //}LinkList,LinkNode;
- typedef struct LinkNode{
- int data;
- struct LinkNode *next;
- }LinkNode,*LinkList;
- //初始化
- bool InitList(LinkList &L){
- L=(LinkList)malloc(sizeof(LinkNode));
- L->next=NULL;
- L->data=-1;
- return true;
- }
- //头插入
- bool ListInsert_F(LinkList &L,int fv){
- LinkNode *s;
- s=(LinkNode*)malloc(sizeof(LinkNode));
- s->data=fv;
- s->next=L->next;
- L->next=s;
- return true;
- }
- //尾插入
- bool ListInsert_B(LinkList &L,LinkNode *node){
- LinkNode *last=NULL;
- if(!L||!node){
- return false;
- }
- last=L;
- while(last->next){
- last=last->next;
- }
- node->next=NULL;
- last->next=node;
- return true;
- }
- //指定位置插入
- bool ListInsert(LinkList &L,int i,int &e){
- if(!L){
- return false;
- }
- int j=0;
- LinkList p,s;
- p=L;
- while(p&&j<i-1){
- p = p->next;
- j++;
- }
- if(!p||j>i-1){
- return false;
- }
- s=new LinkNode;
- s->data=e;
- s->next=p->next;
- p->next=s;
- return true;
- }
- //删除
- bool ListDelete(LinkList &L,int i){
- LinkList p,q;
- int index=0;
- p=L;
- if(!L||!L->next){
- return false;
- }
- while(p->next&&index<i-1){
- p=p->next;
- index++;
- }
- if(!p->next||index>i-1){
- return false;
- }
- q=p->next;
- p->next=q->next;
- delete q;
- return true;
- }
- //查找
- LinkNode *LocateElem(LinkList L,int e){
- LinkNode *p=L->next;
- while(p&&p->data!=e){
- p=p->next;
- }
- return p;
- }
- //输出
- bool ListOutput(LinkList &L){
- LinkNode *p=L;
- cout<<"当前单链表为:";
- while(p->next){
- cout<<p->data<<" "<<endl;
- p=p->next;
- }
- return true;
- }
- //求表长
- int ListLength(LinkList L){
- int length=0;
- LinkNode *p=L;
- if(L==NULL){
- return 0;
- }
- while(p->next!=NULL){
- p=p->next;
- length++;
- }
- cout<<"当前表长度为:"<<length<<endl;
- return length;
- }
- //销毁
- void ListDestory(LinkList &L){
- LinkList p=L;
- while(p){
- L=L->next;
- delete p;
- p=L;
- }
- }
- int main(){
- LinkList List;
- cout<<"1.创建空表"<<endl;
- cout<<"2.头插法"<<endl;
- cout<<"3.尾插法"<<endl;
- cout<<"4.插入新元素(在第i位插入)"<<endl;
- cout<<"5.删除元素(位置删除)"<<endl;
- cout<<"6.删除元素(值删除)"<<endl;
- cout<<"7.输出当前链表"<<endl;
- cout<<"8.求前驱"<<endl;
- cout<<"9.求后继"<<endl;
- cout<<"10.销毁链表"<<endl;
- cout<<"11.置空表"<<endl;
- cout<<"12.求表长"<<endl;
- cout<<"13.获取结点数值"<<endl;
- cout<<"14.搜索结点"<<endl;
- cout<<"15.退出"<<endl;
- cout<<"请输入将要进行的操作编号:"<<endl;
- int option;
- cin>>option;
- while(option!=15){
- switch(option){
- case 1:
- InitList(List);
- break;
- case 2:
- int f;
- cout<<"请输入你要插入的值:";
- cin>>f;
- ListInsert_F(List,f);
- ListOutput(List);
- break;
- case 3:
- break;
- case 4:
- break;
- case 5:
- break;
- case 6:
- break;
- case 7:
- break;
- case 8:
- break;
- case 9:
- break;
- case 10:
- break;
- case 11:
- break;
- case 12:
- break;
- case 13:
- break;
- case 14:
- break;
- }
- cin>>option;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement