单链表的基本操作
来源:互联网 发布:海绵城市模型软件 编辑:程序博客网 时间:2024/05/30 04:08
1.单链表的建立
LinkList *CreateLinkList()//建立一个带头结点的单链表并返回其头结点的地址{ char ch; int x; LinkList *head;//head为头结点指针 LinkList *r,*P;//r为尾指针,P为新申请结点指针 head=(LinkList *)malloc(sizeof(LinkList));//申请头结点 head->next=NULL;//生成头结点 r=head;//尾指针初始化 ch=getchar();//ch为建立与否的标志 while(ch!='*')//"*"为输入数据结束的符号 { scanf("%d",&x);//读入新的数据元素 P=(LinkList *)malloc(sizeof(LinkList));//申请新结点 P->data=x; P->next=NULL;//生成新结点 r->next=P;//新结点插入链尾 r=r->next;//修改尾指针 ch=getchar();//读入建立与否的标志 } return head;//返回表头结点指针}
2.求表长
int LengthLinkList(L)//求单链表L的长度LinkList *L{ LinkList *P=L;//初始化指针变量P,使其指向头结点 int j=0;//初始化变量j while(P->next!=NULL) { P=P->next; j++;//指针传递,P所指的是第j个结点 } return j;//返回表长}
3.元素的查找
LinkList *GetLinkList(L,i)//在单链表L中查找第i个元素并返回其位置,无第i个元素返回NULLLinkList *L;int i;{ LinkList *P; int j=0; P=L;//让P指向头结点 while((j<i)&&(P->next!=NULL))//当未找到第i个结点且表不空继续找 { P=P->next; j++; } if(j==i) return P; else return NULL;}//GetLinkList
4.插入
LinkList *insertLinkList(L,x,i)//在单链表L中第i个位置插入值为x的结点LinkList *L;elemtype x,int i;{ LinkList *P,*S; P=getLinkList(L,i-1);//查找第i-1个结点 if(P==NULL) printf("第i-1个元素不存在,参数i有错\n"); else { S=(LinkList *)malloc(sizeof(LinkList));//申请结点 S->data=x;//填元素值x S->next=P->next;//新结点插入第i-1个结点后面 P->next=S; }}//insertLinkList
5.删除
LinkList *deleteLinkList(&L,i)//删除单链表L中第i个结点LinkList *L;int i;{ LinkList *P,*S;//定义局部变量 P=GetLinkList(L,i-1);//查找第i-1个结点 if(P==NULL) printf("第i-1个元素不存在,参数i有错\n"); else { S=P->next;//S指向第i个结点 P->next=S->next;//删除第i个结点 free(S);//释放被删结点空间 }}//deleteLinkList
6.单链表逆置
算法思路:依次从原链表中取出每个结点,每次都把它作为第一个结点插入到新链表中去。为此要借用两个指针变量p和q,p是用来指向原链表中的当前第一个结点,q用来指向从原表取出的每一个结点并利用它插入到新链表中去,当p为空时,完成逆置。
void reverse(H)//该算法完成对单链表H的逆置LinkList *H;{ LinkList *P,*q; P=H->next;//P指向第一个结点 H->next=NULL;//将原链表置为空表 while(P!=NULL) { q=P;//q指向原链表当前第一个结点 P=P->next;//P指向下一个结点 q->next=H->next;//将新链表当前第一个结点插在q后 H->next=q;//把q插入头结点中 }}//reserve
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作!
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- 单链表的基本操作
- Eclipse 4.2 安装Java反编译插件
- Ubuntu10
- qt之文件操作
- Python调用(运行)外部程序
- java performance
- 单链表的基本操作
- Scalable Web Architecture and Distributed Systems
- 国内CVPR和图像处理领域的公司和研究机构
- 安卓手机模拟器的安装
- 请考虑更改其中一个程序集的“嵌入互操作类型”属性
- android 用 ant 打包编译
- 把一个字段一次性遍历给指定的多个控件
- XML学习之Xml Schema:二、Xml Schema与命名空间
- Java之正则表达式学习总结