c语言之链表实现
2013-03-13 22:12
239 查看
1 #include <stdio.h> #include <stdlib.h> struct Node { struct Node *next; int num; }; struct Node *list = NULL; /** * 初始化链表 */ void initList() { list = (struct Node *)malloc(sizeof(struct Node)); list->next = NULL; } /** *添加链表元素 */ void addList(int i) { struct Node *p = (struct Node*)malloc(sizeof(struct Node)); p->num = i; p->next = list; list = p; } /** *打印链表内容 */ void printfList() { int i =0; struct Node *p = list; while(p->next !=NULL) { i++; printf("num = %d\n",p->num); p = p->next; } } /** * 获得链表长度 */ int getListLength() { int length = 0; struct Node *node = list; while(node->next != NULL) { length++; node = node->next; } return length; } /** *插入数据到链表 */ int insertToList(int position ,int num) { int length = getListLength(); if(position >length-1) { return -1; } if(position == length-1) { struct Node *node = (struct Node *)malloc(sizeof(struct Node)); node->num = num; node->next = list; list = node; return 0; } else { /* int i=0; struct Node *node = list; while(i<position) { node = node->next; } struct Node *p = (struct Node *)malloc(sizeof(struct Node)); p->num = num; p->next = node->next; node->next = p; */ return 0; } } /** *逆序链表 */ void inversionToList() { struct Node *p,*q,*front; p = list; while(p!=NULL) { q = p->next; p->next = front; front = p; p =q; } list = p; } /** *查找给定的元素 */ int findListData(int key) { struct Node *node = list; int i = 0; while(node->next !=NULL) { if(node->num == key) { goto find; } node = node->next; i++; } find: return i; } int main() { initList(); int i = 0; for(i = 0;i<6;i++) { addList(i); } printf("list length = %d\n",getListLength()); printf("find position = %d\n",findListData(2)); if(-1 == insertToList(2,19)) { printf("error\n"); } printfList(); inversionToList(); } 以上主要完成了链表的基本操作,还需要将链表的插入稍作修改
相关文章推荐
- C语言实现的双向链表,C语言实现的动态链表
- 蓝桥杯 - 算法训练 - 卡片游戏 链表 C语言实现
- (C语言)单链表的顺序实现(数据结构一)
- c语言实现双向链表的基本操作
- C语言实现单链表的基本操作
- 线性表的链式存储(单链表)C语言实现
- 单链表编写递增有序并集(c语言实现)
- 用c语言实现单链表
- C语言实现链表之单向链表(二)结点内存申请及数据初始化
- 算法学习第二课链表C语言实现
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- C语言实现储存不定类型的链表(一)
- C语言实现链表之单向链表(十)删除任意结点
- 链表的建立,输出,删除,插入运算的c语言实现
- 【数据结构】C语言实现无头节点单链表
- C语言:实现链表插入10个数据
- C语言实现单链表-04版
- c基础之链表-C语言单链表实现19个功能完全详解
- c语言对链表的实现
- 静态链表 c语言实现