线性表ya

线性表ya,第1张

一.顺序表 二.单链表  1.定义
typedef struct node{
ElemType data;
strcut node *next;
}Node,*LinkList;
2.初始化
int InitLinkList(LinkList *L){
(*L)=(LinkList)malloc(sizeof(Node));
if((*L)==NULL)  return 0;
(*L)->next=NULL;
return 1;
}
3.插入(易错j)
int insertLinkLinst(LinkList L,ElemType e,int i){
LinkList p=L,q;
int j=0;
if(i<=0) {printf("输入位置不对\n"); return 0;}
if(q=(LinkList)malloc(sizeof(Node))==NULL){printf("申请空间失败\n"); return 0;}
q->data=e;
while(p!=NULL&&jnext;
j++;
}
if(p==NULL) {printf("插入位置越上界\n"); return 0;}
q->next=p->next;
p->next=q;
return 1;
}
4.删除(易错p->next!=NULL)
int deletLinkList(LinkList *L,int i,ElemType *e){
LinkList p=L,q;
int j=0;
if(i<=0) {printf("删除位置不对\n"); return 0;}
while(p->next!=NULL&&jnext;
j++;
}
if(p==NULL) {printf("删除位置错误\n"); return 0;}
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
return 1;
}
5.更新/修改
int updataLinkList(LinkList L,int i,ElemType e){
LinkList p=L;
int j=0;
if(i<=0) {printf("位置不对\n"); return 0;}
while(p!=NULL&&jnext;
j++;
}
if(p==NUll){printf("越上界,修改失败\n");return 0;}
p->data=e;
return 1;
}
6.求长度
int LinkListLength(LinkList L){
LinkList p=L->next;
int n=0;
while(p){
p=p->next;
n++;
}
printf("链表长度是%d",n);
return 1;
}
7.定位
int LactionLinkList(LinkList L,ElemType e){
LinkList p=L->neXt;
int i=0;
while(p&&strcmp(e,p->data)){
p=p->next;
i++;}
if(p==NULL) {printf("没有查找到\n"); return 0;}
printf("在第%d个位置\n",i);
return 1;
}
8.遍历
int disLinkList(LinkList L){
LinkList p=L->next;
while(p){
printf("%s  %d\n",p->next.name,p->data.number);
p=p->next;
}
return 1;
}
9.创建 
void createLinkList(LinkList *L){
int n=1,i;
ElemType e;
InitLinkList(L);
do{
printf("请输入插入对象\n");
scanf("%s%d",e.name,&e.number);
insertLinkList(*L,n++,e);
printf("请问要继续输入吗?1是/0否");
scanf("%d\n",&i);
}while(i)
10.逆置 
void inverLinkList(LinkList L){
LinkList p=L->next,q;
L->next=NULL;
while(p){
q=p;
p=q->next;
q->next=L->next;
L->next=q;
}
} 
三.单向循环链表

1.定义(同单链表)

2.初始化

int InitLinkList(LinkList *L){
*L=(LinkList)malloc(sizeof(Node));
if(*L==NULL) exit(0);
(*L)->next=*L;
return 1;
}

 3.插入

int insertLinkList(LinkList L,int i,ElemType e){
LinkList q,p=L;
int j=0;
if(i<=0) {printf("输入位置不对\n"); return 0;}
if(q=(LinkList)malloc(sizeof(Node))==NULL){printf("申请空间失败\n"); return 0;}
q->data=e;
while(p->next!=L&&jnext;
j++;
}
if(p->next==L){printf("插入位置越上界\n"); return 0;}
if(j>i-1)
q->next=p->next;
p->next=q;
return 1;
}

4.删除

int deleLinkList(LinkList L,int i){
LinkList L=p,q;
int j=0;
if(L->next==L){printf("链表为空\n"); return 0;}
while(p->next!=L&&jnext;
j++;
}
if(p->next==L){printf("位置越上界\n"); return 0;}
q=p->next;
p->next=q->next;
free(q);
return 1;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存