用c++实现单向链表的创建,插入和删除
2015-07-03 17:33
751 查看
用c++实现单向链表的创建,插入和删除
#include<iostream>
using namespace std; typedef struct NODE { int data; struct NODE * next; }node; node * creat(); void print (node *head); int Insert (node * head,int pos,int num); int Delete (node * head,int pos);//删除第pos个结点 void main() { cout<<"线性表啊的链式实现方式 5.16\n"; node * head; head=creat();//以head为表头创建一个链表 print (head); int pos,num; cout<<"\ninput the position and number to be insert\n"; cin>>pos>>num; Insert (head,pos,num); print (head); cout<<"\ninput the position to be delete\n"; cin>>pos; int e=Delete(head,pos); print (head); cout<<endl; } node * creat() { node*head=NULL; node*end=NULL; node*ps; int num; ps=new node; ps->next=NULL; head=ps; end=ps; cout<<"input numbers end with 0:"; cin>>num; while(num!=0) { ps=new node; ps->data=num; end->next=ps; end=ps; cin>>num; } end->next=NULL; return head; } void print (node * head) { node * travel =head->next; while(travel!=NULL) { cout<<travel->data<<' '; travel=travel->next; } } int Insert (node * head,int pos,int num) { node * p=head; int j=0; while(p&&j<pos-1)//若p!=null,循环pos-1次到pos-1个结点,再将创建的新结点插入到第pos个位置。 { p=p->next; ++j; } if(!p||j>pos-1) return 0; node * s=(node *)malloc(sizeof(node));//生成新结点 s->data=num; s->next=p->next; p->next=s; return 0; } int Delete (node * head,int pos) //删除第pos个结点 { node * p= head; int j=0; while(p->next&&j<pos-1) { p=p->next; j++; } if(!(p->next)||j>pos-1) return 0; node * q=p->next; p->next=q->next; int e=q->data; free(q); return e; }
相关文章推荐
- 一个C语言写的2048游戏
- 浅谈C语言中的位段
- C++字符串之间转化——Unicode字符集
- C++写一个排列组合小程序
- VC++6.0使用OpenGL前的配置(必看)
- 【C语言】之C语言高效编程技巧
- C++[类设计] ini配置文件读写类config
- 循环队列实现(C++) Ring Buffer
- C++ primer学习笔记(5)——vector中装的是string指针怎么办
- 数组排序方法及C实现的总结
- C++中const、volatile、mutable的用法
- C++类简单使用
- (搬运工)推荐!国外程序员整理的 C++ 资源大全
- c++文件流基本用法(fstream, ifstream, ostream)
- c语言排序后删除数组中重复的数字再排序输出
- C++字符串操作笔试题第二波
- C++ Primer学习笔记(4)——指针和引用的比较
- 浅谈C++多态性
- libslog---高性能开源C/C++多线程安全日志库
- C++ primer读书笔记 1