数据结构——几种链表基本操作
2013-10-04 23:56
519 查看
#include <iostream> #include<stdlib.h> #include<stdio.h> using namespace std; typedef struct Node { int data; struct Node *next; }Node; typedef struct Node *LinkList; LinkList CreateList() { LinkList pHead = (LinkList)malloc(sizeof(Node)); if(NULL==pHead) { exit(-1); } LinkList pTail = pHead;//pTail总是指向最后一个 pTail->next=NULL; int len; scanf("%d",&len); pHead->data = len; while(len--) { int val; scanf("%d",&val); LinkList pNew=(LinkList)malloc(sizeof(Node)); if(NULL==pNew) { exit(-1); } pNew->data=val; pNew->next = NULL; pTail->next = pNew; pTail = pNew; } return pHead; } void TraverseList(LinkList pHead) { LinkList pTail = pHead->next; while(NULL!=pTail) { printf("%d\t",pTail->data); pTail = pTail->next; } printf("\n"); } //在pos位置后面插入值val void InsertList(LinkList pHead,int val,int pos) { LinkList pTail = pHead->next; int len = pHead->data;//头节点存放链表的长度 int i; if(len<pos) { printf("要插入的位置大于链表总长度"); return ; } //移动指针,到pos-1位置 for(i=1;i<pos;i++) { pTail = pTail->next; } //要插入的节点 LinkList pNew = (LinkList)malloc(sizeof(Node)); pNew->data = val; pNew->next = pTail->next; pTail->next = pNew; pHead->data = len+1; } //删除位置为pos的值,并返回删除的值 int DeleteList(LinkList pHead,int pos) { int i=0; int len = pHead->data; LinkList pTail = (LinkList)malloc(sizeof(Node)); pTail = pHead->next; if(len<pos) { printf("要插入的位置大于链表总长度"); return -1; } //移动到指定位置pos-1 while(++i<pos) { pTail = pTail->next; } LinkList delNode = pTail->next; pTail->next = delNode->next; return delNode->data; } //返回链表的长度 int ListLength(LinkList pHead) { return pHead->data; } void ClearList(LinkList pHead) { pHead->data=0; pHead->next=NULL; } int main() { LinkList pHead = (LinkList)malloc(sizeof(Node)); //创建链表 pHead = CreateList(); //遍历链表 TraverseList(pHead); //插入节点 InsertList(pHead,10,2); TraverseList(pHead); //删除节点 DeleteList(pHead,2); TraverseList(pHead); //InitList(&linkList); return 0; }
相关文章推荐
- 大话数据结构一:线性表的顺序存储结构
- (三)循环链表以及循环链表应用
- 数据结构存储的顺序和链式对比
- [数据结构]程杰《大话数据结构》链栈代码
- (二)线性结构之LinkedList的实现
- java与数据结构(3)---java实现循环链表
- (一)线性结构之ArrayList的实现
- 数据结构之图
- 跟我学数据结构-- 线性表的链式存储结构
- PHP数据结构练习笔记--队列
- PHP数据结构练习笔记--栈
- 跟我学数据结构--线性表的顺序存储
- [数据结构]程杰《大话数据结构》书中的顺序栈源码(
- 红黑树教程 by Julienne Walker
- 初学数据结构四
- 【数据结构】之队列的java实现(一)
- 数据结构全攻略--攻破非线性结构堡垒之树和二叉树(一)
- 学习数据结构的作用
- [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- [数据结构]程杰《大话数据结构》静态链表代码(