P
PRadyut
In this code it throws a runtime error on a code access violation .
On the line z->data=p->data;
while (p!=NULL && q!=NULL)
{
if (*s==NULL)
{
printf("test");
*s==(struct node*)malloc(sizeof(struct node));
z=*s;
}
else
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
}
if(p->data < q->data)
{
z->data=p->data;
p=p->link;
}
else if(q->data < p->data)
{
z->data = q->data;
q=q->link;
}
else if(p->data==q->data)
{
z->data=q->data;
p=p->link;
q=q->link;
}
}
The full program, it is merging of two linked lists
----------------------------------------------------------
// add.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <alloc.h>
struct node
{
int data;
struct node *link;
};
void add(struct node **, int );
void display (struct node *);
void lmerge(struct node *, struct node *, struct node **);
int main()
{
struct node *a, *b, *c;
a=NULL;
add(&a, 3);
add(&a, 11);
add(&a, 6);
add(&a, 9);
add(&a, 2);
add(&a, 17);
add(&a, 4);
add(&a, 18);
add(&a, 5);
add(&a, 10);
display(a);
b = NULL;
add(&b, 1);
add(&b, 19);
add(&b, 12);
add(&b, 16);
add(&b, 15);
add(&b, 8);
add(&b, 7);
add(&b, 13);
add(&b, 14);
add(&b, 20);
display(b);
c=NULL;
lmerge(a,b, &c);
display(c);
return 0;
}
void add(struct node **q, int num)
{
struct node *p, *temp;
p=*q;
temp=(struct node*)malloc(sizeof(struct node));
temp->data = num;
//temp->link=NULL;
if(*q==NULL || p->data > num)
{
*q=temp;
(*q)->link=p;
}
else
{
while(p!=NULL)
{
if(p->link==NULL || p->link->data >= num )
{
temp->link=p->link;
p->link=temp;
return;
}
p = p->link;
}
temp->link=NULL;
p->link=temp;
}
}
void display (struct node *p)
{
while(p!=NULL)
{
printf("%d\n", p->data);
p=p->link;
}
}
void lmerge(struct node *p, struct node *q, struct node **s)
{
struct node *z;
z=NULL;
if(p==NULL && q==NULL)
return;
while (p!=NULL && q!=NULL)
{
if (*s==NULL)
{
printf("test");
*s==(struct node*)malloc(sizeof(struct node));
z=*s;
}
else
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
}
if(p->data < q->data)
{
printf("test");
z->data=p->data;
p=p->link;
}
else if(q->data < p->data)
{
z->data = q->data;
q=q->link;
}
else if(p->data==q->data)
{
z->data=q->data;
p=p->link;
q=q->link;
}
}
while(p!=NULL)
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
z->data=p->data;
p=p->link;
}
while(q!=NULL)
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
z->data=q->data;
q=q->link;
}
z->link=NULL;
}
----------------------------------------------------------------
Any help
thanks
Pradyut
http://pradyut.tk
http://groups.yahoo.com/group/d_dom/
http://groups-beta.google.com/group/oop_programming
India
On the line z->data=p->data;
while (p!=NULL && q!=NULL)
{
if (*s==NULL)
{
printf("test");
*s==(struct node*)malloc(sizeof(struct node));
z=*s;
}
else
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
}
if(p->data < q->data)
{
z->data=p->data;
p=p->link;
}
else if(q->data < p->data)
{
z->data = q->data;
q=q->link;
}
else if(p->data==q->data)
{
z->data=q->data;
p=p->link;
q=q->link;
}
}
The full program, it is merging of two linked lists
----------------------------------------------------------
// add.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <alloc.h>
struct node
{
int data;
struct node *link;
};
void add(struct node **, int );
void display (struct node *);
void lmerge(struct node *, struct node *, struct node **);
int main()
{
struct node *a, *b, *c;
a=NULL;
add(&a, 3);
add(&a, 11);
add(&a, 6);
add(&a, 9);
add(&a, 2);
add(&a, 17);
add(&a, 4);
add(&a, 18);
add(&a, 5);
add(&a, 10);
display(a);
b = NULL;
add(&b, 1);
add(&b, 19);
add(&b, 12);
add(&b, 16);
add(&b, 15);
add(&b, 8);
add(&b, 7);
add(&b, 13);
add(&b, 14);
add(&b, 20);
display(b);
c=NULL;
lmerge(a,b, &c);
display(c);
return 0;
}
void add(struct node **q, int num)
{
struct node *p, *temp;
p=*q;
temp=(struct node*)malloc(sizeof(struct node));
temp->data = num;
//temp->link=NULL;
if(*q==NULL || p->data > num)
{
*q=temp;
(*q)->link=p;
}
else
{
while(p!=NULL)
{
if(p->link==NULL || p->link->data >= num )
{
temp->link=p->link;
p->link=temp;
return;
}
p = p->link;
}
temp->link=NULL;
p->link=temp;
}
}
void display (struct node *p)
{
while(p!=NULL)
{
printf("%d\n", p->data);
p=p->link;
}
}
void lmerge(struct node *p, struct node *q, struct node **s)
{
struct node *z;
z=NULL;
if(p==NULL && q==NULL)
return;
while (p!=NULL && q!=NULL)
{
if (*s==NULL)
{
printf("test");
*s==(struct node*)malloc(sizeof(struct node));
z=*s;
}
else
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
}
if(p->data < q->data)
{
printf("test");
z->data=p->data;
p=p->link;
}
else if(q->data < p->data)
{
z->data = q->data;
q=q->link;
}
else if(p->data==q->data)
{
z->data=q->data;
p=p->link;
q=q->link;
}
}
while(p!=NULL)
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
z->data=p->data;
p=p->link;
}
while(q!=NULL)
{
z->link=(struct node*)malloc(sizeof(struct node));
z=z->link;
z->data=q->data;
q=q->link;
}
z->link=NULL;
}
----------------------------------------------------------------
Any help
thanks
Pradyut
http://pradyut.tk
http://groups.yahoo.com/group/d_dom/
http://groups-beta.google.com/group/oop_programming
India