C语言数据结构之循环链表的简单实例
实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# include <stdio.h> # include <stdlib.h> typedef struct node //定义链表中结点的结构 { int code; struct node *next; }NODE,*LinkList; /*错误信息输出函数*/ void Error( char *message) { fprintf (stderr, "Error:%s/n" ,message); exit (1); } //创建循环链表 LinkList createList( int n) { LinkList head; //头结点 LinkList p; //当前创建的节点 LinkList tail; //尾节点 int i; head=(NODE *) malloc ( sizeof (NODE)); //创建循环链表的头节点 if (!head) { Error( "memory allocation error!/n" ); } head->code=1; head->next=head; tail=head; for (i=2;i<n;i++) { //创建循环链表的节点 p=(NODE *) malloc ( sizeof (NODE)); tail->next=p; p->code=i; p->next=head; tail=p; } return head; } |
第二种方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//创建循环链表方法2(软件设计师教程书上的方法) LinkList createList2( int n) { LinkList head,p; int i; head=(NODE *) malloc ( sizeof (NODE)); if (!head) { printf ( "memory allocation error/n" ); exit (1); } head->code=1; head->next=head; for (i=n;i>1;--i) { p=(NODE *) malloc ( sizeof (NODE)); if (!p) { printf ( "memory allocation error!/n" ); exit (1); } p->code=i; p->next=head->next; head->next=p; } return head; } |
1
2
3
4
5
6
7
8
9
10
11
12
|
void output(LinkList head) { LinkList p; p=head; do { printf ( "%4d" ,p->code); p=p->next; } while (p!=head); printf ( "/n" ); } |
1
2
3
4
5
6
7
8
9
|
void main( void ) { LinkList head; int n; printf ( "input a number:" ); scanf ( "%d" ,&n); head=createList(n); output(head); } |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.chinaunix.net/uid-11765716-id-1594312.html