单向链表的插入、查找和遍历方法 (c)
2009-03-01 22:25
267 查看
单向链表的插入、查找和遍历方法
#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()
相关文章推荐
- 单向链表的插入、查找和遍历方法
- 单链表很类似于栈,先插入的后遍历,删除也是删除最后插进来的。但增加的指定查找和指定删除的方法增加了灵活性,可以删除、查找指定key
- 单向链表的创建、遍历、求长、判存、判空、插入、删除、查找(按位置或元素)、合并
- 两种方法实现单向链表的创建、遍历、删除、查找、逆序输出(循环法和递归法)
- 单向循环链表创建、遍历、插入、删除、查找(按位置,按元素值)、清空、销毁
- 单向链表的相关操作(创建,遍历,插入,删除,逆置)
- 单链表建立,插入,删除,查找,遍历操作!!!!
- 单向链表的相关操作总结:创建、删除、查找、排序、统计链表大小、链表的反转和遍历等
- 单向链表-遍历(查找)
- 二叉搜索树的相关操作:插入节点,删除节点,排序,查找,最大值,最小值,前序,中序,后序遍历(主要用到递归的方法)
- 链表定义以及实现(遍历,节点计数,插入节点)--1(面向对象的方法实现)
- 单向链表的操作:创建,删除,插入,销毁,查找
- 单向链表的建立、打印、查找、插入、删除
- C实现简单单向链表,一次遍历查找倒数第k个节点的值
- 单链表建立,插入,删除,查找,遍历操作
- 单链表建立,插入,删除,查找,遍历操作
- 单链表的尾插,头插,遍历,查找和插入
- 单循环链表的初始化、插入、删除、遍历、查找
- 链表之节点插入、查找删除、遍历打印、遍历释放
- 单向链表的遍历、查找