正文

单向链表的插入、查找和遍历方法2006-03-25 15:23:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/ljqy/11382.html

分享到:

#include<stdio.h>#include<conio.h> #define N 3 int Link_Length = N; //记录链表的长度 //定义结构体struct  t_node{  int data;  struct t_node *next;}; 定义别名typedef struct  t_node Node; //定义链表变量Node  * example_link = NULL; /**功能:获取指定位置的节点的地址*输入:plink=链表,i=索引位置,从零开始*输出:无*返回值:索引节点的地址*/Node * get(Node *plink,int i){   if(NULL == plink)     return NULL;   int count = 0;  Node * pNext = plink;    while(count<i && pNext != NULL)  {    count++;    pNext = pNext->next;  }  return pNext;}//endget() /**功能:向指定链表中的指定位置前插入节点*输入:plink=链表,x=新节点的值,i=插入位置*输出:plink=插入节点后的新链表*返回值:成功返回true, 否则为false*/bool Insert(Node *&plink,int x,int i){     Node *s = NULL; //新节点   Node *q = NULL; //中间变量  //构建新节点   s = (node *)malloc( sizeof(node) );    if( s == NULL )        return false;      s->data = x;   s->next = NULL;    if(i==0)//插入在头节点前   {       s->next = plink;       plink = s;    }    else//插入在中间部位    {//0               //获取需插入位置的节点        q = get(plink,i-1);        if( NULL==q )    return false;         s->next=q->next;        q->next=s;            }//endelse0    return true; }//endInsert() /**功能:初始化链表*输入:无*输出:无*返回值:无*/void Init_Link(void){     Node *pNext = NULL;   //头节点   example_link = (Node *)malloc( sizeof(Node) );    if(NULL == example_link)       return;   scanf("%d\n",&example_link->data);   example_link->next = NULL;   //中间节点  pNext = example_link; //为游标赋值  for(i=1,i<N,i++)  {     pNext->next = (Node *)malloc( sizeof(Node) );      if(NULL == pNext->next)       return;    scanf("%d\n",&pNext->next->data);    pNext->next->next = NULL;    pNext = pNext->next; //移动游标  } }main(){   int i,n;  Node *pNext = NULL;   //初始化链表  Init_Link();   //插入新节点  Insert(example_link, 2, 1);/* 2为插入的元素值,1为插入的位置*/     //节点数增加   Link_Length++;    if(NULL == example_link)       return;   /*/在该行前面加"/"则使用第一方法    //第一方法   pNext = example_link;      for(i=0,i<Link_Length; i++)   {      printf("%d\n",pNext->data);      pNext = pNext->next;   }   /*/   //第二方法   pNext = example_link;      while(pNext != NULL)   {      printf("%d\n",pNext->data);      pNext = pNext->next;   }   //*/   getch(); }//endmain() 

阅读(4042) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册