Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73967
  • 博文数量: 20
  • 博客积分: 1213
  • 博客等级: 中尉
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-21 23:22
个人简介

C++1111111111111111111111111111111222222222222222222222222222222

文章分类
文章存档

2016年(1)

2011年(1)

2009年(18)

最近访客

分类: C/C++

2009-12-07 22:52:21

#include
#include
#include
typedef struct _NODE_
{
 int data;
 struct _NODE_ *next;
}listnode, *linklist;
void PrintLn();
linklist CreateLinklist_1();
void CreateLinklist_2(linklist *h);
int Length(linklist h);
void Visit(linklist h);
int Empty(linklist h);
linklist Search(linklist h, int value);
linklist GetLinklist(linklist h, int pos);
int Insert_1(linklist h, int pos, int value);
void Insert_2(linklist h, int value);
int Delete_1(linklist h, int pos);
void Delete_2(linklist h, int value);
void ClearLinklist(linklist h);
int main(int argc, char *argv[])
{
 linklist L, L2;
 L = CreateLinklist_1();
 CreateLinklist_2(&L2);
 Insert_1(L, 0, 0);
 Insert_1(L, 1, 1);
 Insert_1(L, 2, 2);
 Insert_2(L, 5);
 printf("Length of L is %d.\n", Length(L));
 Visit(L);
 Insert_2(L2, 0);
 Insert_1(L2, 1, 1);
 Insert_1(L2, 2, 2);
 Insert_1(L2, 3, 3);
 Insert_1(L2, 4, 4);
 Insert_1(L2, 5, 5);
 Insert_1(L2, 6, 6);
 Insert_1(L2, 7, 7);
 printf("Length of L2 is %d.\n", Length(L2));
 Visit(L2);
 Delete_1(L2, 3);
 printf("Length of L2 is %d.\n", Length(L2));
 Visit(L2);
 return 0;
}
void PrintLn()
{
 printf("\n");
}
linklist CreateLinklist_1()
{
 linklist h;
 h = (linklist)malloc(sizeof(listnode));
 h->next = NULL;
 return h;
}
void CreateLinklist_2(linklist *ph)
{
 *ph = (linklist)malloc(sizeof(listnode));
 (*ph)->next = NULL;
}
int Length(linklist h)
{
 int len = 0;
 linklist p = h;
 while( p = p->next )
 {
  len++;
 }
 return len;
}
void Visit(linklist h)
{
 linklist p = h;
 while( p = p->next )
 {
  printf("%d ", p->data);
 }
 PrintLn();
}
int Empty(linklist h)
{
 return ( NULL == h->next );
}
linklist Search(linklist h, int value)
{
 linklist p = h;
 while( p = p->next )
 {
  if( value == p->data )
  {
   return p;
  }
 }
 return NULL;
}
linklist GetLinklist(linklist h, int pos)
{
 int i = 0;
 linklist p = h;
 if( pos >= 0 )
 {
  while( (p = p->next) && ( i < pos ) )
  {
   i++;
  }
  if( i == pos)
  {
   return p;
  }
 }
 return NULL;
}
int Insert_1(linklist h, int pos, int value)
{
 int i = 0;
 linklist p = h;
 linklist q = (linklist)malloc(sizeof(listnode));
 q->data = value;
 if( pos < 0 )
 {
  return -1;
 }
 while( p && (i < pos) )
 {
  i++;
  p = p->next;
 }
 if( p )
 {
  q->next = p->next;
  p->next = q;
  return 0;
 }
 else
 {
  return -1;
 }
}
void Insert_2(linklist h, int value)
{
 linklist p = h;
 linklist q = malloc(sizeof(listnode));
 q->data = value;
 while( p->next && ( value > (p->next->data)) )
 {
  p = p->next;
 }
 q->next = p->next;
 p->next = q;
}
int Delete_1(linklist h, int pos)
{
 int i = 0;
 linklist p = h;
 linklist q = NULL;
 while( p->next && ( i < pos ) )
 {
  p = p->next;
  i++;
 }
 if(p->next)
 {
  q = p->next;
  p->next = q->next;
  free(q);
  return 0;
 }
 return -1;
}
void Delete_2(linklist h, int value)
{
 linklist q;
 linklist p = h;
 while(p->next)
 {
  if(value == p->next->data)
  {
   q = p->next;
   p->next = q->next;
   free(q);
  }
  if(!(p->next))
  {
   break;
  }
 }
}
void ClearLinklist(linklist h)
{
 linklist p, q;
 p = h;
 while(p->next)
 {
  q = p->next;
  p->next = q->next;
 }
}
阅读(2094) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~