
Nguyên bản được gửi bởi
utkunglt
ừh!!! vấn đề thì út đã nêu ở trên rồi!!! bây giờ chỉ còn trình bày ra nữa thoy!!!
tùy theo style mỗi người mà code!!!
mong sớm nhận được code hoàn chỉnh của chủ topic!!!
cảm ơn mấy bạn.Mình làm được rồi.nếu rảnh thì kiểm tra xem có lỗi j ko giúp mình vs nhé.Mình thấy code mình dài quá.
Code:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#include<malloc.h>
typedef struct pp{
int mang;
struct pp *next;
}dslk;
int ngaunhien(int a,int b){
int c;
void srand ( unsigned int time() ) ;
c=rand()%(b-a+1)+a;
return c;
}
dslk* getnode(int x){
dslk *p;
p=(dslk*)malloc(sizeof(dslk));
p->mang=x;
return p;
}
dslk* tail(dslk **pdau){
dslk *p;
p=*pdau;
while(p!=NULL){
if(p->next==NULL) break;
p=p->next;
}
return p;
}
dslk* before(dslk **pdau,int n){
dslk *q;
q=*pdau;
int i=1;
while(i<(n-1)){
q=q->next;
i++;
}
return q;
}
int insert_top(dslk **pdau,int x){
dslk *q;
q=getnode(x);
q->next=*pdau;
*pdau=q;
}
int insert_bottom(dslk **p1,int x){
dslk *q,*p;
p=*p1;
q=getnode(x);
p->next=q;
q->next=NULL;
}
int insert_behind(dslk **p,int x){
dslk *q,*k,*n;
k=*p;
n=k->next;
q=getnode(x);
if(k->next=NULL) insert_bottom(&k,x);
else{
q->next=n;
k->next=q;
}
}
int taodanhsach(dslk **pdau){
int i=1,a=1,b=20,n=8;
dslk *p;
*pdau=NULL;
while(i<=n){
if(*pdau==NULL){
*pdau=(dslk*)malloc(sizeof(dslk));
p=*pdau;
}
else{
p->next=(dslk*)malloc(sizeof(dslk));
p=p->next;
}
p->mang=ngaunhien(a,b);
p->next=NULL;
i++;
}
}
int main(){
dslk L,*p,*pdau,*p1,*q;
int x,i=1,n=0;
taodanhsach(&pdau);
p=pdau;
while(p!=NULL){
printf("%d\t",p->mang);
p=p->next;
n++;
}
printf("\n");
printf("Nhap x");
scanf("%d",&x);
p=pdau;
while(p!=NULL){
if((p->mang==x)){
if((i!=1)&&(i!=n)){
q=before(&pdau,i);
insert_behind(&q,x-1);
insert_behind(&p,x+1);
i=i+2;
n=n+2;
p=p->next;
}
if(i==1){
insert_behind(&pdau,x+1);
insert_top(&pdau,x-1);
i=i+2;
n=n+2;
p=p->next;
}
if(i==n){
p1=tail(&pdau);
q=before(&pdau,n);
insert_behind(&q,x-1);
insert_bottom(&p1,x+1);
n=n+2;
}
}
p=p->next;
i++;
}
p=pdau;
while(p!=NULL){
printf("%d\t",p->mang);
p=p->next;
}
getch();
}