c++链表简易操作
2011-06-06 15:16
309 查看
// LinkTableTest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream>; using namespace std; //学生结构体,用于构建链表 struct student { //string name; char name[20]; int age; student* nextStu; }; //程序入口 void main() { student c = {"end",0,NULL}; student b = {"lucy",21,&c}; student a = {"andlu",23,&b}; student* head = &a; student* pointer = head; //函数申明 int getLength(student* pointer,int length); void insertOneNode(student* head,student* pointer,int leng,int index,student* newNode); void showAllNode(student* pointer); bool findOneNodeByName(student* head,char* destName,bool inIsFind); //对数组进行冒泡排序(测试) void sortArray(int arr[],int arrLen); //函数申明结束 //调用显示所有学生信息函数 pointer = head; showAllNode(pointer); //获得链表长度 pointer = head; int leng = 0; leng = getLength(pointer,leng); cout<<"结果接收链表长度:"<<leng<<endl; //查找lucy pointer = head; bool isFindLucy = false; isFindLucy = findOneNodeByName(head,"lucy",isFindLucy); cout<<"结果接收查找lucy:"<<isFindLucy<<endl; //插入节点 head = &a; pointer = head; student x = {"xMen",0,NULL}; student *xmen = &x; insertOneNode( head, pointer,leng,2,xmen); //调用显示所有学生信息函数 pointer = head; showAllNode(pointer); //sort int arr int arr[10] = {1,5,8,7,6,3,4,2,0,9}; sortArray(arr,10); int i; cin>>i; } /** *功能描述:插入一个节点 *parm : head,头结点 index,要插入的位置的后面,第index个的后面 */ void insertOneNode(student* head,student* pointer,int leng,int index,student* newNode) { //int leng = 0; //leng = getLength(pointer,leng); if(index > leng) { cout<<"抱歉,您插入的位置超出链表长度!"<<endl; return ; }else if(index == 0) { cout<<"您插入了一个头结点!"<<endl; student* temp; temp = head; newNode->nextStu = temp; head = newNode; return; } for(int i = 0;i< index-1;i++) { pointer = pointer->nextStu; } newNode->nextStu = pointer->nextStu; pointer->nextStu = newNode; } /** *功能描述:获取链表的长度 *parme :head头结点 *param :length 返回的长度值 */ int getLength(student* pointer,int length) { length = 0; while(pointer) { if(pointer->nextStu!=NULL) { length++; pointer = pointer->nextStu; } else { cout<<"链表长度:"<<length<<endl; return length; } } } /** *功能描述:遍历所有节点 * param : pointer 链表头结点 * 功能 :传入链表头结点,打印出此链表的所有节点的名称 */ void showAllNode(student* pointer) { while(pointer) { cout<<pointer->name<<endl; pointer = pointer->nextStu; } } /* *查找一个学生名称是否存在链表中 *param: *head : 链表头结点 *destName :要查找学生的名称 *inIsFind :返回的结果,是否查找到了 */ bool findOneNodeByName(student* head,char* destName,bool inIsFind) { inIsFind = false; while(head) { if(!strcmp(destName,head->name)) { inIsFind = true; cout<<"找到你要找的了:"<<inIsFind<<endl; return inIsFind; } head = head->nextStu; } return inIsFind; } //对链表进行排序 void sortStu() { } //对数组进行冒泡排序(测试) void sortArray(int arr[],int arrLen) { int flag , i , j ,temp; for( i= 0 ;i< arrLen;i++) { flag = 0; for( j = 0;j<arrLen - i - 1; j++) { if(arr[j]> arr[j+1]) { flag = 1; temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } if(flag == 0) { break; } } //println all data for(i = 0;i< arrLen;i++) cout<<arr[i]<<"->"<<endl; }
相关文章推荐
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- C++实现链表操作
- 单(双向)链表的基本操作 C++
- 单链表结点读取、插入、删除操作(基本操作)-C++
- C++实现链表基本操作
- C++ 数据结构的单链表的建立,插入,删除操作
- C++ 实现简单的链表操作
- c++ 链表操作:添加、遍历、删除、查找
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- C++链表操作
- 华南理工数据结构大作业第一题单链表 删除创建等各种简易操作
- C++数据结构---链表(删除操作)
- c++链表的操作
- 链表的相关操作查找插入删除(c++ 数据结构)
- c++ 简易文件读写操作
- C++中单链表的基本操作:判空、增、删、显示
- 【C++】模版实现双向链表的各种操作(如:逆置、去重Unique、分类(冒泡)、合并)
- c++实现链表的基本操作
- c++链表的操作
- 单链表的插入删除操作(c++实现)