# 加载中...

liht1634
• 博客等级：
• 博客积分：0
• 博客访问：223,741
• 关注人气：58
• 获赠金笔：0支
• 赠出金笔：0支
• 荣誉徽章：

## 线性表-单向循环链表

(2017-01-16 15:52:47)

### 线性表之单循环链表

/////////////////////////////////////Program of circular linked list ///////////////////////////

#include "stdio.h"
#include "malloc.h"

struct node

int info;
}*last;

void create_list(int num)//创造一个以num为值的节点，添加到链表末尾,由于是循环链表，所以保存一个
//尾节点last作为一个链表访问接口就可以了
struct node *tmp;
tmp= malloc(sizeof(struct node));
tmp->info = num;

if(last == NULL)     //链表一个节点都没有

last = tmp;

else

last = tmp;

struct node *tmp;
tmp = malloc(sizeof(struct node));
tmp->info = num;

{
struct node *tmp,*q;
int i;
for(i=0; i < pos-1; i++)

printf("There are less than %d elements\n",pos);
return;

tmp = malloc(sizeof(struct node) );
tmp->info = num;
if(q==last)
last=tmp;

void del(int num)      //删除值为num的节点

struct node *tmp,*q;
if( last->link == last && last->info == num)

tmp = last;
last = NULL;
free(tmp);
return;

if(q->info == num)       //q,此时指向首节点,跟首节点值相同，进行一系列删除操作

tmp = q;
free(tmp);
return;

free(tmp);
printf("%d deleted\n",num);
return;

free(tmp);
last = q;
return;

void display()      //显示循环链表的所有节点的值

struct node *q;
if(last == NULL)       //空表

printf("List is empty\n");
return;

printf("List is :\n");
while(q != last)     //从首节点开始循环

printf("%d ", q->info);

printf("%d\n",last->info);   //输出完了首节点后输出last节点，结束了
}

/////////////////////////////////////////////////////////////////////////////////////////////////

int main(void)

int choice,n,m,po,i;
last=NULL;

while(1)
{
printf("1.Create List\n");
printf("4.Delete\n");
printf("5.Display\n");
printf("6.Quit\n");
scanf("%d",&choice);

switch(choice)

case 1:
printf("How many nodes you want : ");
scanf("%d",&n);

for(i=0; i < n;i++)

printf("Enter the element : ");
scanf("%d",&m);
create_list(m);

break;

case 2:
printf("Enter the element : ");
scanf("%d",&m);
break;

case 3:
printf("Enter the element : ");
scanf("%d",&m);
printf("Enter the position after which this element is inserted : ");
scanf("%d",&po);
break;

case 4:
if(last == NULL)

printf("List underflow\n");
continue;

printf("Enter the number for deletion : ");
scanf("%d",&m);
del(m);
break;

case 5:
display();
break;

case 6:
exit(0);
default:
printf("Wrong choice\n");

return 0;
}

/////////////////////////////////////////////////////////////////////////////////////////////////

0

• 评论加载中，请稍候...

发评论

以上网友发言只代表其个人观点，不代表新浪网的观点或立场。

新浪BLOG意见反馈留言板　欢迎批评指正

新浪公司 版权所有