双向链表的建立以及输出
2010-05-13 13:46
85 查看
关于双向循环链表的建立
/* 这个是一个双向链表的建立*/
#include "stdio.h"
#define NULL 0
#define N 5
#define SS sizeof(struct stu)
typedef struct stu
{ int num;
int name[10];
struct stu *llink,*rlink;/* 定义两个指针*/
}ss;
ss *list()
{ ss *h,*r,*s;
int i;
if((h=(ss *)malloc(SS))==NULL)
{ printf("wrogn !");
}
h->num=NULL; /* 首先处理这个两个指针*/
h->llink=NULL;
h->rlink=NULL;
h->name[0]='/0';/*对这个数据域也要处理*/
r=h;
for(i=0;i<N;i++)
{ s=(ss *)malloc(SS);
r->rlink=s;
printf("inter :/n");
scanf("%d%s",&s->num,&s->name);
s->llink=r; /*表明这个新建立的着s的左指针指向这个尾节点表明已经链入了尾节点部分*/
s->rlink=NULL;/* 把s的右指针置为NULL因为还用不到*/
r=s;/* 表明这个s已经成了新的链尾*/
}
h->llink=r;/* 综合处理这个双向循环链表的尾部分*/
r->rlink=h;
return h;
}
ss *input(ss *head)
{ ss *p;
p=head->rlink;/* p指向这个head的右指针所指向的数*/
if(p!=head)
do
{ printf("%2d%4s/n",p->num,p->name);
p=p->rlink;
}while(p!=head);/* 注意他的结束条件改变了。为head因为现在是一个双向循环链表,尾节点指向这个head*/
}
main()
{ ss *head;
printf("/n ht put is :/n");
head=list();
input(head);
getch();
}/* 其余的和单链表是相通的*/*****************
/* 这个是一个双向链表的建立*/
#include "stdio.h"
#define NULL 0
#define N 5
#define SS sizeof(struct stu)
typedef struct stu
{ int num;
int name[10];
struct stu *llink,*rlink;/* 定义两个指针*/
}ss;
ss *list()
{ ss *h,*r,*s;
int i;
if((h=(ss *)malloc(SS))==NULL)
{ printf("wrogn !");
}
h->num=NULL; /* 首先处理这个两个指针*/
h->llink=NULL;
h->rlink=NULL;
h->name[0]='/0';/*对这个数据域也要处理*/
r=h;
for(i=0;i<N;i++)
{ s=(ss *)malloc(SS);
r->rlink=s;
printf("inter :/n");
scanf("%d%s",&s->num,&s->name);
s->llink=r; /*表明这个新建立的着s的左指针指向这个尾节点表明已经链入了尾节点部分*/
s->rlink=NULL;/* 把s的右指针置为NULL因为还用不到*/
r=s;/* 表明这个s已经成了新的链尾*/
}
h->llink=r;/* 综合处理这个双向循环链表的尾部分*/
r->rlink=h;
return h;
}
ss *input(ss *head)
{ ss *p;
p=head->rlink;/* p指向这个head的右指针所指向的数*/
if(p!=head)
do
{ printf("%2d%4s/n",p->num,p->name);
p=p->rlink;
}while(p!=head);/* 注意他的结束条件改变了。为head因为现在是一个双向循环链表,尾节点指向这个head*/
}
main()
{ ss *head;
printf("/n ht put is :/n");
head=list();
input(head);
getch();
}/* 其余的和单链表是相通的*/*****************
相关文章推荐
- 【碎片知识(2)· C语言】链表的建立、输出、特定点的删除和插入以及malloc函数的应用
- 双向链表的建立与输出
- 【C语言】 链表 单链的建立以及输出
- 双向链表的建立、初始化和输出
- 数据结构——9 双向链表建立、输出和测长
- C语言习题 链表建立,插入,删除,输出
- 设计一个整型链表类list,能够实现链表节点的插入、删除、以及链表数据的输出操作。
- 建立双向链表
- YTU 2430: C语言习题 链表建立,插入,删除,输出
- 单链表逆序输出C++ (stack方法、双向链表方法以及vector方法)
- 链表的建立、输出、非递归反转、递归反转
- 如何建立和输出一个简单链表
- 单链表的建立与输出
- 建立和输出一个简单的链表
- 将双向链表转化为二叉堆并有序输出
- 双向链表的建立
- 头插法建立链表--逆序输出
- 用C++实现双链表的增删查改以及双向链表的逆转
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 26751:线性链表的建立及逆序输出 分数: 100