线性表链式存储的实现
来源:互联网 发布:mac不能登录icloud 编辑:程序博客网 时间:2024/04/28 19:01
typedef struct node{ //链表的线性表示的定义
int data;
struct node *next;
}listnode,*linklist;
linklist CreateLinklist_l(){ //创建链表
linklist head;
head = (linklist)malloc(sizeof(listnode));
head->next = NULL;
return head;
}
void VisitLink(linklist head){ //遍历
linklist p = head->next;
while(p){
printf("%d",p->data);
p = p->next;
}
printf("/n");
}
int SearchLinklist(linklist head,int value){ //查找
linklist p=head->next;
int pos = 1;
while(p){
if(p->data == value){
return pos;
}
p=p->next;
pos++;
}
return 0;
}
int GetLinklist(linklist head,int pos,int *val){ //获得特定位置的值
linklist p=head;
if(pos<1){
printf(ERROR1);
return -1;
}
while(pos--){
p=p->next;
if(NULL ==p){
printf(ERROR2);
return -1;
}
}
*val=p->data;
return 0;
}
void InsertLinklist_2(linklist head,int value){ //插入
linklist p=head,q;
while((p->next!=NULL)&&(p->next->data<value)){
p=p->next;
}
q=(linklist)malloc(sizeof(listnode));
q->data=value;
q->next=p->next;
p->next=q;
return;
}
int DeleteLinklist_1(linklist head,int pos){ //删除
linklist p=head,q;
if(pos<1){
printf(ERROR1);
return -1;
}
while(--pos){
p=p->next;
if(NULL==p){
printf(ERROR2);
return -1;
}
}
if(NULL==(q=p->next)){
printf(ERROR2);
return -1;
}
p->next=q->next;
free(q);
return 0;
}
void DeleteLinklist_2(linklist head,int value){
linklist p,q;
p=head;
q=p->next;
while(q){
if(q->data==value){
p->next=q->next;
free(q);
}
else{
p=q;
}
q=p->next;
}
return;
}
void ListConcat(LinkList ha,LinkList hb,LinkList &hc){ //把链表hb接在ha后面形成的链表hc
hc=ha;
p=ha;
while(p->next)p=p->next;
p->next=hb;
}//ListCOncat
void LinkList_reverse(Linklist *L){ //单链表的逆转操作 链表的就地逆置;为简化算法,假设表长大于2
Linklist *p,*q;
p=L->next;
q=p->next;
s=p->next;
p->next=NULL;
while(s->next){
q->next=p;
p=q;
q=s;
s=s->next; //把L的元素逐个插入新表表头
}
q->next=p;
s->next=q;
L->next=s;
}//LinkList_reverse
- 线性表链式存储的实现
- 线性表链式存储的实现
- 线性表链式存储的实现详解
- 线性表链式存储的实现详解
- 线性表链式存储实现
- 线性表链式存储结构的c语言实现
- 线性表链式存储结构的表示和实现
- 线性表链式存储C++实现
- 线性表链式存储实现各种操作
- 线性表链式存储结构实现 --单链表
- 线性表链式存储_api函数实现
- 线性表链式存储_api函数实现
- 线性表链式存储结构一种实现
- 线性表链式存储
- 线性表链式存储
- 线性表链式存储
- 线性表链式存储
- 线性表链式存储
- netlistmgr
- 十大建站开源程序(转)
- 六 排序
- 【POJ2250】Compromise (最长公共子序列,DP)
- ArcGIS Server Manager不能启动---“访问IIS元数据失败”
- 线性表链式存储的实现
- ASP.NET中公有的六种验证控件
- js document属性集合
- 北京有些培训机构居然明目张胆地把我设计的课程大纲照抄过去
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToke
- 有关参数传递的情况(javascript)。有关全剧变量和局部变量的关系以及对象实例作为参数的情况。
- ASP.NET 2.0中TextBox服务器控件的ReadOnly和Disabled属性
- dTree复选框取得子节点ID与Value,结合lhgdialog
- MYSQL关于时间日期的sql语句