当前位置:首页 >> IT/计算机 >>

链表 实例


// list.cpp : // #include "stdafx.h"

struct node//定义链表节点数据结构 { int data; struct node * pnext; }; class list { public: struct node* phead;//定义一个变量,用于存放第一个节点 public: list(int a[],int k); void insert(int value,int pos); int getlenth(); void print(); void sort(); int deleteitem(int pos); }; int list::getlenth()//获取链表长度 { struct node* pl=phead; int i=0; while(pl!=NULL) { pl=pl->pnext; i++; } return i; } void list::insert(int value,int pos=0)//在某位置插入某值 { struct node* pinsert=new node; struct node* previous=new node; if(pos==0) { pinsert->data=value; pinsert->pnext=phead; phead=pinsert; } else { int j=1; previous=phead; while(j<pos) { previous=previous->pnext;

j++; } pinsert->data=value; pinsert->pnext=previous->pnext; previous->pnext=pinsert; } } int list::deleteitem(int pos)/删除某节点 { struct node* ppos=phead; struct node* ppos1=phead; int i=0; while(i<pos) { ppos=ppos1; ppos1=ppos1->pnext; i++; } ppos->pnext=ppos1->pnext; delete ppos1; return 1; } list::list(int a[],int k)//用一个数组初始化链表 { phead=NULL; for(int i=0;i<k;i++) { struct node* pin=new node; pin->data=a[k-i-1]; pin->pnext=phead; phead=pin; } } void list::print()/打印链表 { int length=getlenth(); struct node* ptr=phead; for(int i=0;i<length;i++) { printf("%d\t",ptr->data); ptr=ptr->pnext; } } void list::sort()//排序链表 { int length=getlenth(); struct node* ptr=new node; ptr=phead; for(int k=length-1;k>0;k--) {

for(int i=0;i<k;i++)//链表操作从头到位,所以采用正向冒泡 { if(ptr->data>ptr->pnext->data) { int tmp=ptr->data; ptr->data=ptr->pnext->data; ptr->pnext->data=tmp; } ptr=ptr->pnext; } ptr=phead; } } int _tmain(int argc, _TCHAR* argv[])//主函数测试 { int a[5]={3,5,6,8,1}; list list1(a,5); printf("链表初始化为:\n"); list1.print(); printf("\插入值后为:\n"); list1.insert(999); list1.insert(33,3); list1.print(); printf("\n删除值后为:\n"); list1.deleteitem(2); list1.print(); printf("\n排序后为:\n"); list1.sort(); list1.print(); return 0; }


相关文章:
C语言链表的操作实例
C语言链表的操作实例 - 关于 C 语言链表的操作实例 有这样一个结构体 char team//队伍名 int jifen//积分 int win//胜利场数 int lost//失利场数 现...
linux 链表操作示例
linux 链表操作示例_IT/计算机_专业资料。包括全部链表操作,清楚简单! #include<stdio.h> #include<stdlib.h> #include<conio.h> /*定义结构体*/ struct ...
C++中关于链表一例题
C++中关于链表例题 #include <stdio.h> #include <stdlib.h> typedef struct link { int sum; struct link *next; } lnode; lnode *Creat(int n) //...
《数据结构》 实验报告模板(附实例) ---实验一 线性表...
《数据结构》 实验报告模板(附实例) ---实验一 线性表的基本操作实现_学习...熟练掌握线性表的基本操作在两种存储结构上的实现,其中以熟悉各种 链表的操作为...
程序编辑实例--线性表
线性表操作-示例程序 6页 免费 线性表 6页 免费 线性表程序代码 60页 免费如...//双链表的初始化,建立,插入,查找,删除。// #include <stdio.h> #include ...
C++编程实例(c++封装链表、栈、队列)
C++编程实例(c++封装链表、栈、队列)_IT/计算机_专业资料。C++实现对链表、栈、队列的封装,实例中不仅实现了其功能,而且还对一些运算符重载,是学习C++很好的综合参...
课程设计线性表实例
掌握顺序表和链表的实现方法,以及它们的基本操 数据结构课程设计数据结构课程设计实例实践 1 线性表(顺序表) 一、 实验的目的要求 1、 2、 二、 了解线性表的...
双向链表结点的插入
NULL d head 图 3-19 双向链表结点插入在首结点之前示例 (2) 插入在双向链表的尾端 新结点若插入在双向链表的尾端,需要将尾结点的指针 next 指向新结点。...
二叉树基本操作经典实例
二叉树基本操作经典实例 - 该完整程序主要是递归函数的使用及模板的使用,完成了对二叉树基本的链表操作,主要有二叉树的建立,前序、中序、后序遍历,求树的高度,...
数据结构 约瑟夫问题 代码实例
数据结构 约瑟夫问题 代码实例_计算机软件及应用_IT/计算机_专业资料。数据结构 ...基本要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各人 的编号。...
更多相关标签: