数据结构——单循环链表一部分功能的C语言实现
2017-09-20 13:36
666 查看
单循环链表
主要好处在于方便插入删除结点,适用于动态性比较强的数据结构;缺点是每一个结点只能通过上一个结点来访问,随机访问不方便。
//数据结构:单循环链表 #include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct Node{ int data; Node *next; }Node,*PNode;//节点 typedef struct List{ PNode head; PNode tail; int length; }List,*PList;//链表 void initList(PList x){ PNode headNode=(PNode)malloc(sizeof(Node)); if(!headNode) exit(0); headNode->data=0; headNode->next=headNode; x->head=headNode; x->tail=headNode; x->length=0; }//初始化链表 int insertNode(PList x,int i,int e){ if(i>x->length) return 1; PNode newNode=(PNode)malloc(sizeof(Node)); if(!newNode) exit(0); newNode->data=e; PNode p=x->head; for(int j=0;j<i;j++) p=p->next; newNode->next=p->next; p->next=newNode; a1cb if(i==x->length) x->tail=newNode; x->length++; return 0; }//插入结点 int deleteNode(PList x,int i){ if(i>x->length) return 1; PNode p=x->head; for(int j=0;j<i-1;j++) p=p->next; PNode delNode=p->next; p->next=delNode->next; if(i==x->length) x->tail=p; free(delNode); x->length--; return 0; }//删除结点 void outputList(PList x){ PNode p=x->head->next; for(int i=0;i<x->length;i++){ printf("%3d",p->data); p=p->next; } printf("\n"); }//打印链表 int deleteList(PList x){ while(x->length>0){ deleteNode(x,x->length); x->length--; } free(x->head); x->head=NULL; x->tail=NULL; }//删除链表 int main(){ //初始化链表 PList myList=(PList)malloc(sizeof(List)); initList(myList); //添加节点 int e=0; printf("请输入要添加的数据(10个):"); for(int i=0;i<10;i++){ scanf("%d",&e); insertNode(myList,myList->length,e); } outputList(myList); //删除节点 deleteNode(myList,myList->length); outputList(myList); //删除链表 deleteList(myList); return 0; }
相关文章推荐
- C语言数据结构之单向链表(已经调试可以实现相应的功能了,可是还是有几个问题现在还是不大理解,希望大家能够一起探讨)
- 数据结构——双循环链表一部分功能的C语言实现
- C语言数据结构_单链表_19个功能实现全解
- 【数据结构】C语言实现顺序链表
- C语言数据结构实现链表去重的实例
- C语言单链表实现19个功能完全详解
- (单向链表)数据结构的创建和功能函数(C语言)
- C语言实现单链表增删查找等功能
- C++实现数据结构四 单循环链表
- 数据结构与C语言实现(一)——链表及两个实例
- 数据结构学习系列一--链表的建立(c语言实现)
- C语言单链表实现19个功能完全详解
- 数据结构(C++实现)--链表(2) 功能扩充
- 数据结构(二)——链表(C语言实现)
- C语言单链表实现19个功能完全详解
- C语言数据结构_链表的实现
- 【数据结构】C语言实现单链表
- 【数据结构】C语言实现双向链表(带头尾指针,非循环链表)
- (转载)C语言单链表实现19个功能完全详解
- [数据结构]C语言链表实现