单链表反转C语言实现
来源:互联网 发布:淘宝直通车基础 编辑:程序博客网 时间:2024/05/24 15:39
单链表反转,面试常见题目:
#include <conio.h>#include <stdlib.h>#include <stdio.h>#define ERROR -1#define OK 1typedef int ElemType;typedef int Status;typedef struct LNode{ElemType data;LNode *next;}LNode,*LinkList;Status GetElem(LinkList L,int i,ElemType &e){LinkList p;p=L->next;int j=1;while(p&&j<i){p=p->next;++j;}if (!p||j>i)return ERROR;e=p->data;return OK; }Status ListInsert(LinkList L,int i,ElemType e){LinkList p,s;p=L;int j=0;while (p&&j<i-1){p=p->next;++j;}s=(LinkList)malloc(sizeof(LNode));if (!s)return ERROR;s->data=e;s->next=p->next;p->next=s;return OK;}Status ListDelete(LinkList &L,int i,ElemType &e){LinkList p,q;p=L;int j=0;while(p&&j<i-1){p=p->next;++j;}if (!(p->next)||j>i-1)return ERROR;q=p->next;p->next=q->next;e=q->data;free(q);return OK;}void CreateList(LinkList &L,int n){LinkList p;L=(LinkList)malloc(sizeof(LNode));L->next=NULL;for(int i=n;i>0;i--){p=(LinkList)malloc(sizeof(LNode));printf("请输入第%d个元素\n",i);scanf("%d",&p->data);p->next=L->next;L->next=p;}}//链表反转//利用三个指针,pre只向前一个节点,确定指针更改后的指向位置,//cur指向当前节点,用来修改指针方向,ne指向下一个节点,是三个指针前进。//空间复杂度为O(3),事件复杂度为O(n)int ReverseList(LinkList &L){LinkList pre,cur,ne;if (L==NULL||L->next==NULL)return ERROR;pre=L;cur=pre->next;pre=NULL;//尾指针为空while(cur){ne=cur->next;//前进cur->next=pre;pre=cur;//前进cur=ne;//前进}L->next=pre;//新头指针return OK;}void main(){LinkList L,p;ElemType e;int n,m;printf("元素个数:\n");scanf("%d",&n);CreateList(L,n);printf("得到第几个元素:\n");scanf("%d",&m);GetElem(L,m,e);printf("元素为%d\n",e);printf("删除第几个元素\n");scanf("%d",&m);ListDelete(L,m,e);printf("删除的元素为%d\n",e);printf("第几个位置添加元素:\n");scanf("%d %d",&m,&e);ListInsert(L,m,e);printf("输出列表:\n");p=L->next;while(p){printf("%d ",p->data);p=p->next;}printf("链表反转后的结果:\n");ReverseList(L);p=L->next;while(p){printf("%d ",p->data);p=p->next;}getch();}
- 单链表反转C语言实现
- 单链表反转C语言实现
- 单链表反转C语言实现
- C语言实现字符串反转
- C语言反转单链表
- C语言反转单链表
- 单链表反转 c实现
- C语言:单链表的反转
- C语言实现字符串反转程序
- C语言字符串反转的实现
- c语言递归实现字符串反转
- C语言实现整数反转-简练算法
- (C语言)递归实现字符串反转
- 反转链表-C语言实现
- C语言指针实现字符串的反转
- C语言实现字符的反转输出
- 单链表的反转实现(C++)
- C语言来实现字符串反转(只有单词反转,单词里的字母不反转)
- paip.html调试工具--显示控件名称与值
- struts2.0工作原理
- java使用POI操作Excel报表
- 设计模式
- visualbox虚拟机(debian)互连网络配置
- 单链表反转C语言实现
- 一起读nodejs(一)----概览和全局对象(Synopsis &Global Objects)
- Annotated Lucene(源码剖析中文版)
- 3G手机Android应用开发视频教程_黎活明老师的视频下载地址(总共有八天课程)
- AD转换中参考电压的作用 .
- .net xml操作使用方法说明
- 注册表删除脱离svn
- sql 修改表字段时会出现表字段有值 我们可以这么做
- hdu 1100