#include<stdio.h>
#include<stdlib.h>
#define ElemType int
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
bool InitLinkList(LinkList &L){
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL)
return false;
L->next=NULL;
return true;
}
bool EmptyLinkList(LinkList &L){
if(L->next==NULL){
printf("空表\n");
}
else{
printf("非空表\n");
}
return true;
}
bool HeadInsertLinkList(LinkList &L){
LNode *s;int x;
scanf("%d",&x);
while(x!=9999){
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
bool LengthLinkList(LinkList &L){
int i=0;
LNode *p;
p=L;
while(p->next!=NULL){
p=p->next;
i++;
}
printf("链表长度为:%d\n",i);
return i;
}
void PrintLinkList(LinkList &L){
printf("链表为:");
LNode *s;
s=L;
while(s->next!=NULL){
s=s->next;
printf("%d[%d]->",s->data,s->next);
}
printf("\n");
if(s==NULL){
printf("链表为空,无法输出");
}
}
bool GetElemLinkList(LinkList &L,int i){
if(i<0)
return NULL;
LNode *p;
int j=0;
p=L;
while(p!=NULL && j<i){
p=p->next;
j++;
}
printf("查询的第%d位的值为:%d\n",i,p->data);
return p;
}
LNode *Elem(LinkList &L,ElemType e){
LNode *p=L->next;
int i=0;
while(p!=NULL && p->data!=e){
p=p->next;
i++;
}
printf("查询的结点位序为:%d,值为:%d\n",i+1,e);
return p;
}
int main(){
LinkList L;
InitLinkList(L);
EmptyLinkList(L);
HeadInsertLinkList(L);
LengthLinkList(L);
PrintLinkList(L);
GetElemLinkList(L,1);
Elem(L,2);
}
单链表(带头结点)按位序查找和查找指定节点
最新推荐文章于 2024-03-20 11:27:59 发布