1.单链表的初始化
2.尾插法创建单链表
3.输出单链表
4.
#includetypedef struct LNode { char ch; struct LNode *next; }LNode,*LinkList; void InitList(LinkList &p) { p=new LNode; p->next=NULL;//创建一个头结点 if(NULL!=p) printf("初始化成功n"); } void CreatList(LinkList &p) { int n; char ch; LinkList r=p; r->next=NULL;//创建一个尾指针 printf("你想要输入的元素的个数为:n"); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf(" %c",&ch); LinkList q=new LNode; q->ch=ch; r->next=q; q->next=NULL;// 将元素插在尾指针的后面 r=q;//尾指针指向当前单链表中最后一个元素 } }//尾插法创建单链表 void ShowList(LinkList &p) { if(NULL==p->next) printf("当前单链表中没有元素n"); else { printf("当前单链表中元素为:n"); LinkList q=p->next;//再定义一个指向头指针的变量,每次移动该变量以防头指针移动使单链表中元素丢失 while(NULL!=q) { printf("%c ",q->ch); q=q->next; } printf("n"); } } void IsEmpty(LinkList p) { if(NULL==p->next) { printf("当前单链表为空n"); } else printf("不为空n"); }//判断是否为空 int ListLength(LinkList p) { int len=0; LinkList q=p->next; while(NULL!=q) { len++; q=q->next; } return len; }//求单链表长度 void GetElem(LinkList p) { int i=0; int pos; LinkList q=p; printf("你想要输出第几个元素:n"); scanf("%d",&pos); while(NULL!=q&&i next; } printf("%c ",q->ch); if(NULL==q||i>pos)//NULL==q表示输入的位置大于单链表的长度,i>pos表示输入的位置小于1 { printf("输入位置错误n"); } } int FindElem(LinkList p) { char ch; printf("你想要查找的元素为:n"); scanf(" %c",&ch); LinkList q=p->next; int pos=0; while(NULL!=q&&q->ch!=ch) { pos++; q=q->next; } if(NULL==q) { printf("不存在该元素n"); } return pos; } void InsertList(LinkList &p) { int i=0; char ch; int pos; printf("你想要插入的元素和位置为:n"); scanf(" %c",&ch); scanf("%d",&pos); LinkList q=p; while(q&&i next; i++; } if(!q||i>pos-1) { printf("插入位置错误n"); } LinkList q1=new LNode; if(NULL==q1) { printf("内存分配失败n"); } q1->ch=ch; q1->next=q->next; q->next=q1; } void DeleteElem(LinkList &p) { int i=0; int pos; printf("请输入想要删除的元素的位置:n"); scanf("%d",&pos); LinkList q=p; while(NULL!=q&&i next; i++; } if(!q||i>pos-1) { printf("输入位置错误n"); } LinkList q2=q->next; q->next=q2->next; delete q2; } void ReversList(LinkList &p) { printf("翻转后的链表:n"); LinkList p1,p2; p1=p->next; p->next=NULL; while(NULL!=p1) { p2=p1->next; p1->next=p->next; p->next=p1; p1=p2; } } int main() { LinkList p; InitList(p); CreatList(p); ShowList(p); IsEmpty(p); int len=ListLength(p); printf("长度为:%dn",len); GetElem(p); int pos=FindElem(p); printf("元素所在位置为:%dn",pos); InsertList(p); ShowList(p); DeleteElem(p); ShowList(p); ReversList(p); ShowList(p); }
求单链表的长度
5.判断单链表是否为空
6.输出某个位置的元素
7.求元素所在位置
8.插入元素
9.删除元素
10.原地逆转



