|
|
#2
寒风中的细雨2011-03-16 15:53
程序代码://将单循环链表该双循环链表,重写了程序,还是有问题请大家帮忙看看 #include<stdio.h> #include<stdlib.h> typedef struct LNode { int data; struct LNode *p,*next; } LNode, *LinkList; /*建立循环单链表*/ LinkList createList_L() { LinkList L=NULL; LNode *s,*r=NULL; int i, n; printf("请输入元素的个数n:"); scanf("%d",&n); for(i=1;i<=n;i++) { s=(LNode*)malloc(sizeof(LNode)); //s->data=i; s->next=NULL; if(L==NULL) { r=L=s; } else { r->next=s; r=s; } } r->next=L; s = L; printf("输入这些结点的数据:\n"); /* for(i=1;i<=n;i++) { scanf("%d",&s->data); s=s->next; }*/ do { scanf("%d", &s->data ); s = s->next; }while( L != s ); return L; } LinkList LinkChange(LinkList L) { LinkList pre, next; pre = L; do { next = pre->next; next->p = pre; pre = pre->next; }while( pre != L ); return L; /* for(q=L;!q->next->p;q=q->next) { q->next->p = q; }*/ } void print_LinkList(LinkList L) { LinkList p; p = L; do { printf("%d ",p->data); p = p->next; }while( p != L ); printf("\n"); } void r_print( LinkList L ) { LinkList p; p = L; do { printf("%d", p->data); p = p->p; }while( p != L ); printf("\n"); } int main() { LinkList L; //int n; L=createList_L(); print_LinkList(L); L = LinkChange( L); r_print(L); return 0; } |
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode *p,*next;
} LNode, *LinkList;
/*建立循环单链表*/
LinkList createList_L(int n)
{
LinkList L=NULL;
LNode *s,*r=NULL;
int i;
printf("请输入元素的个数n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=(LNode*)malloc(sizeof(LNode));
//s->data=i;
s->next=NULL;
if(L==NULL)
{
r=L=s;
}
else
r->next=s;
r=s;
}
r->next=L;
printf("输入这些结点的数据:",n);
for(i=1;i<=n;i++)
{
scanf("%d",&s->data);
s=s->next;
}
return L;
}
void LinkChange(LinkList L)
{
LinkList q;
for(q=L;!q->next->p;q=q->next)
q->next->p=q;
}
void print_LinkList(LinkList L)
{
LinkList p;
p=L->next ;
//for(;p!=NULL;p=L->next)
printf("%d",p->data);
}
int main()
{
LinkList L;
int n;
L=createList_L(n);
print_LinkList(L);
LinkChange( L);
print_LinkList(L);
return 0;
}
程序代码: