PDA

View Full Version : سوال: لیست پیوندی



silver2000
سه شنبه 04 خرداد 1389, 20:01 عصر
سلام
من میخوام لیست پیوندی که ساحتم با حلقه forپیمایشش کنم چه جوری این کارو بکنم از کجا شروع کنم توی شرط حلقه چی بذارم

tdkhakpur
سه شنبه 04 خرداد 1389, 20:39 عصر
مثالهای زیادی داخل تالار هست کلمه لیست پیوندی را جستجو کنید.

saber187518
سه شنبه 04 خرداد 1389, 22:58 عصر
با سلام دوست عزیز
فکر کنم کد زیر کارتو راه بندازه.
این برنامه برای کار با پشته و صف نوشتم. البته با لینک لیست.
سعی کن بخونیش و درکش کنی و حلقه whilwe رو به for تبدیلش کنی.


#include<stdio.h>
#include<conio.h>
#include<alloc.h>
#define max_stack 10
#define max_q 10
int sp=0,f=-1,r=-1;
typedef struct stack *s_pointer;
typedef struct stack{
int item;
s_pointer link;
};
s_pointer top[max_stack];

typedef struct queue *queue_pointer;
typedef struct queue{
int item;
queue_pointer link;
};
queue_pointer front[max_q],rear[max_q];

void push(s_pointer *top,int x){
if(sp<max_stack){
s_pointer temp=(s_pointer) malloc(sizeof (stack));
temp->item=x;
temp->link=*top;
*top=temp;
sp++;}
else
printf("stack is full");
}

int pop(s_pointer *top){
if(sp>0){
s_pointer temp=*top;
int item;
item=temp->item;
*top=temp->link;
free(temp);
sp--;
return item;}
printf("stack is empty");
return 0;
}

void addq(queue_pointer *front,queue_pointer *rear,int x)
{
if(r<9)
{queue_pointer temp=(queue_pointer) malloc(sizeof(queue));
temp->item=x;
temp->link=NULL;
if(*front)
(*rear)->link=temp;
else
*front=temp;
*rear=temp;
r++;
}
else
printf("\nqueue if full\n");
}
int deleteq(queue_pointer *front)
{
if(r==f){printf("\nqueue is empty");
return 0;}
else
{ queue_pointer temp=*front;
int x;
x=temp->item;
*front=temp->link;
free(temp);
f++;
return x;
}
}
void main()
{
char c;
int xx;
clrscr();
printf("Enter U:push stack P:pop stack A:add queue D:delete queue X:Exit\n");
for(;;)
{
c=getch();
if(c=='x')
break;
if(c=='u')
{printf("\nEnter number to push : ");
scanf("%d",&xx);
push(top,xx);}
if(c=='p')
printf("\n%d",pop(top));
if(c=='a')
{printf("\nEnter number to add queue : ");
scanf("%d",&xx);
addq(front,rear,xx);}
if(c=='d')
printf("\n%d",deleteq(front));
}
getch();
}

موفق باشی.