[데이터 구조] 링크 의 실현 (선두 노드)
5210 단어 데이터 구조
typedef struct Linklist{
int data;// int
struct Linklist *next;
}LL;
LL *headcreate_list(int n){
LL *p,*q;
p=NULL;
srand(time(0));
for(int i=0;i<=n;i++){
q=(LL *)malloc(sizeof(LL));
q->data=rand()/1000;
q->next=p;
p=q;
}
return p;
}
-
C++ LL *create_list (int n) {LL * p, r, q; p = (LL) malloc (sizeof (LL)); p - > next = NULL; r = p; srand (time (0); for (int i = 1; i < = n; i + +) {q = (LL) malloc (sizeof (LL); q - > data = rand () / 1000; q - > next = r - > next = q; r - > next = q;} return p; / p 는 헤드 노드} ` ` ` `LL *insert_list(LL *p,int place,int e){
LL *q,*s;int j;
q=p;j=1;
while(jnext;
j++;
}
s=(LL*)malloc(sizeof(LL));
s->data=e;
s->next=q->next;
q->next=s;
return p;
}
LL *delete_list(LL *p,int place){
int e,j=1;
LL *q,*r;
q=p;
while(jnext;
j++;
}
e=q->next->data;
printf(" :%d
",e);
r=q->next;
q->next=q->next->next;
free(r);
return p;
}
int LOCATE (LL *p,int e){
int i;
LL *q;
if(p){
i=1;
q=p->next;
while(q){
if(q->data==e) return i;
i++;
q=q->next;
}
}
return 0;
}
int LENGTH(LL *p){
LL *q;
int n=0;
if(p){
q=p->next;
while(q){
n++;
q=q->next;
}
}
return n;
}
LL *nizhi(LL *head){ //
LL *p,*pnext;
p=head->next;
head->next=NULL;
while(p){
pnext=p->next;
p->next=head->next;
head->next=p;
p=pnext;
}
return head;
}
void print_list(LL *p){
LL *q;
q=p->next;
if(!q) printf("Empty list.");
else while(q){
printf("%d ",q->data);
q=q->next;
}
printf("
");
}
전체 코드 구현:
#include
#include
#include
#include
typedef struct Linklist{
int data;
struct Linklist *next;
}LL;
LL *create_list(int n);//
LL *headcreate_list(int n);//
void print_list(LL *p);//
LL *insert_list(LL *p,int place,int e);// e place
LL *delete_list(LL *p,int place);// place
int LOCATE(LL *p,int e);//
int LENGTH(LL *p); //
LL *nizhi(LL *p); //
int main(){
LL *head;
int e,n,place1,place2;
printf(" :
");
scanf("%d",&n);
//head=create_list(n);
head=headcreate_list(n);
printf(" :
");
print_list(head);
printf(" :
");
scanf("%d %d",&place1,&e);
printf(" :
");
head=insert_list(head,place1,e);
print_list(head);
printf(" :
");
scanf("%d",&place2);
head=delete_list(head,place2);
printf(" :
");
print_list(head);
printf(" :") ;
int ha;
scanf("%d",&ha);
int pl=LOCATE(head,ha);
printf(" %d
",pl);
int shu=LENGTH(head);
printf(" %d
",shu);
head=nizhi(head);
printf("
");
printf(" :
");
print_list(head);
return 0;
}
LL *create_list(int n){
LL *p,*r,*q;
p=(LL*)malloc(sizeof(LL));
p->next=NULL;
r=p;
srand(time(0));
for(int i=1;i<=n;i++){
q=(LL*)malloc(sizeof(LL));
q->data=rand()/1000;
q->next=r->next;
r->next=q;
r=q;
}
return p;//p
}
void print_list(LL *p){
LL *q;
q=p->next;
if(!q) printf("Empty list.");
else while(q){
printf("%d ",q->data);
q=q->next;
}
printf("
");
}
LL *insert_list(LL *p,int place,int e){
LL *q,*s;int j;
q=p;j=1;
while(jnext;
j++;
}
s=(LL*)malloc(sizeof(LL));
s->data=e;
s->next=q->next;
q->next=s;
return p;
}
LL *delete_list(LL *p,int place){
int e,j=1;
LL *q,*r;
q=p;
while(jnext;
j++;
}
e=q->next->data;
printf(" :%d
",e);
r=q->next;
q->next=q->next->next;
free(r);
return p;
}
LL *headcreate_list(int n){
LL *p,*q;
p=NULL;
srand(time(0));
for(int i=0;i<=n;i++){
q=(LL *)malloc(sizeof(LL));
q->data=rand()/1000;
q->next=p;
p=q;
}
return p;
}
int LOCATE (LL *p,int e){
int i;
LL *q;
if(p){
i=1;
q=p->next;
while(q){
if(q->data==e) return i;
i++;
q=q->next;
}
}
return 0;
}
int LENGTH(LL *p){
LL *q;
int n=0;
if(p){
q=p->next;
while(q){
n++;
q=q->next;
}
}
return n;
}
LL *nizhi(LL *head){ //
LL *p,*pnext;
p=head->next;
head->next=NULL;
while(p){
pnext=p->next;
p->next=head->next;
head->next=p;
p=pnext;
}
return head;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.