本文只涉及单链表的基本操作,由于本人是初学者所以相关排序和查找等算法后期更新。
本文涉及单链表的以下内容:
- 单链表的初始化
- 单链表的合法判定
- 单链表成员的打印
- 单链表成员的赋值(头插法)(尾插法)
- 顺序表成员的清空
- *顺序表成员的插入
- *顺序表成员的删除
#include#include typedef int ElemType; typedef struct linklist{ ElemType data; struct linklist *next; }*linkList,Lnode; //单链表初始化 bool initList(linkList &L){ L= new Lnode; L=L->next=NULL; return true; } //打印单链表 void printList(linkList &L){ linkList p = L->next; if(p==NULL){ printf("链表已空!n"); } else{ printf("当前单链表成员为:n"); while(p!=NULL){ printf("%dt",p->data); p=p->next; } } printf("n"); } //单链表的创建(头插法) void H_createList(linkList &L){ linkList p; L=new Lnode; L->next=NULL; int e; int l = 1; for(int i=0;i data); p->next=L->next; L->next=p; printf("是否继续创建?是(1),否(0) :"); scanf("%d",&e); if(e==0){printf("创建完毕!!n");break;} else l++; } printList(L); } //单链表的创建(尾插法) void T_createList(linkList &L){ linkList p,r; L=new Lnode; L->next=NULL; r=L; int l =1,e; for(int i =0;i data); p->next = NULL; r->next = p; r=p; printf("是否继续创建?是(1),否(0) :"); scanf("%d",&e); if(e==0){printf("创建完毕!!n");break;} else l++; } printList(L); } //单链表的创建 void createList(linkList &L){ int i; printf("头插法请输入1t尾插法请输入2n请输入插入方法:"); scanf("%d",&i); switch(i){ case 1: H_createList(L);break; case 2: T_createList(L);break; default:printf("输入数字不在范围内!n"); } } //单链表成员的插入 void insertList(linkList &L){ int l,i=0; linkList n = new Lnode; linkList p=L; printf("请输入所插入的位置(位置>=1):"); scanf("%d",&l); while(p&&i next; ++i; } n->next=p->next; p->next=n; printf("请输入插入的数字:"); scanf("%d",&n->data); printList(L); } //单链表成员的删除 void deletList(linkList &L){ int i=0,l; linkList p=L; linkList q; printf("请输入所删除的位置(位置>=1):"); scanf("%d",&l); while(p->next&&i next; ++i; } q=p->next; p->next=q->next; delete q; printf("删除完成!!n"); printList(L); } //单链表的清空 void clearList(linkList &L){ linkList p,q; p=L->next; while(p){ q=p->next; delete p; p=q; } L->next=NULL; printList(L); } //单链表的销毁 void destroyList(linkList &L){ linkList p; while(L){ p=L; L=L->next; delete p; } printf("单链表已销毁!!n"); } //操作菜单 void opreatmune(){ printf("n**********操作代码**********n"); printf("单链表成员的创建————1t单链表的成员的插入————2t单链表成员的删除————3t打印单链表成员————4t单链表所有成员的删除————5t单链表的销毁————6t退出程序————10n"); printf("***************************n"); printf("n"); } int main(){ int choice; linkList L; bool a; a=initList(L); if(a==true) while(1){ opreatmune(); printf("请输入操作代码:"); scanf("%d",&choice); if(choice==10) break; else{ switch(choice){ case 1:createList(L);break; case 2:insertList(L);break; case 3:deletList(L);break; case 4:printList(L);break; case 5:clearList(L);break; case 6:destroyList(L);break; default:printf("操作代码不在范围内!!n"); } } } return 0; }
由于作者知识有限,若有不足恳请指正。



