当前位置:文档之家› C++链表、栈、队列用法示例

C++链表、栈、队列用法示例

C++链表操作示例*#29·链表创建struct ts *Create(){struct ts *head=NULL,*tail=NULL,*newnode;//首节点newnode=new ts;strcpy(newnode->name,"张三");strcpy(newnode->num,"");head=newnode;tail=newnode;tail->next=NULL;//第二个newnode=new ts;strcpy(newnode->name,"李四");strcpy(newnode->num,"");tail->next =newnode;tail=newnode;tail->next=NULL;return head;}//初始化*#30·链表输出//显示所有信息void display(ts *head){ts *p=head;if(head==NULL)//链表为空{cout<<"链表为空!"<<endl; return ;}cout<<"链表内容如下:"<<endl; while(p!=NULL){cout<<p->name<<"\t"<<p->num <<"\t"<<endl; p=p->next;}}//display*#31·插入节点//开头插入节点void add(ts *&head,ts *neod){struct ts *tail=NULL;if(head==NULL){head=neod;tail=neod;tail->next=NULL;}else{neod->next =head;head=neod;}}//插入节点//结尾插入节点void inst(ts *&head,ts *neod) {struct ts *tail=NULL,*p=head; if(head==NULL){head=neod;tail=neod;tail->next=NULL;}elsewhile(p->next!=NULL){p=p->next;}p->next=neod;neod->next=NULL;}}//插入节点*#32·链表删除//删除功能void del(ts *&head,char c[]) {ts *p=head;//首节点if(strcmp(c,p->name)==0)head=p->next;//p=head;}//ifelse{while(p!=NULL){if(strcmp(c,p->next->name)==0) {ts *q;q=p->next;p->next=q->next;break;}//ifp=p->next;}//while}//else;}//del//删除头结点void delh(ts *&head){if(head==NULL)return;elsehead=head->next;//p=head;}//delh//删除尾结点void delt(ts *&head){struct ts *tail=NULL,*p=head; if(head==NULL)return;else{while(p->next->next!=NULL)p=p->next;p->next=NULL;}}//delt*#33·链表查找//查找by indexstruct ts *serch(ts *head,int r) {struct ts *p=head;int j=1;if(r<0)cout<<"编号错误"<<endl;else{while(j!=r&&p!=NULL){j++;p=p->next;}if(r==j&&p!=NULL)return p;else{cout<<"编号错误"<<endl; return head;}}}//serch*#34·数组函数#include <>#include <>#include <>struct test{int x;//操作数1int y;//操作数2int z;//答案};//创建void cre(int a[][10],int line)//数组,总数,范围上届{int i=0,j=0;srand(time(NULL));//时间种子for(i=0;i<line;i++){for(j=0;j<10;j++){a[i][j] =int(rand()%(100-1)+1);//操作数1}}//for} //crevoid build(int a[],int len,int up)//数组,总数,范围上届{int i=0;srand(time(NULL));//时间种子for(i=0;i<len;i++){a[i] =int(rand()%(up-1)+1);//操作数1}//for} //build//输出void disp(int a[][10],int line){for(int i=0;i<line;i++){for(int j=0;j<10;j++){cout<<a[i][j] <<"," ;}cout<<endl;}cout<<endl;}//display//输出void display(int a[],int count) {for(int i=0;i<count;i++){cout<<a[i] <<"," ;}cout<<endl;}//display//排序0升1降void maopao(int a[],int s,int u_d) {int temp;int i,j;for(i=0;i<s-1;i++){for(j=0;j<s-i-1;j++){switch(u_d){case 0://升序if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}break;case 1://降序if(a[j]<a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}break;}//switch}//for1}//for2}//maopao//冒泡排序-升void upm(int a[],int s) {int temp;int i,j;for(i=0;i<s-1;i++){for(j=0;j<s-i-1;j++){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}//for1}//for2}//upm//冒泡排序-降void downm(int a[],int s){int temp;int i,j;for(i=0;i<s-1;i++) {for(j=0;j<s-i-1;j++) {if(a[j]<a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}//for1}//for2}//downm//选择排序-升void upj(int a[],int s) {int k;int i,j,temp;for(i=0;i<s-1;i++){k=i;for(j=i+1;j<s;j++){if(a[j]<a[k]){temp=a[j];a[j]=a[k];a[k]=temp;}}//for1}//for2//选择排序-降void downj(int a[],int s) {int k;int i,j,temp;for(i=0;i<s-1;i++){k=i;for(j=i+1;j<s;j++){if(a[j]>a[k]){temp=a[j];a[j]=a[k];a[k]=temp;}}//for2}//downj//求总和int sum(int a[][10],int line) {int s=0;for(int i=0;i<line;i++){for(int j=0;j<10;j++){s+=a[i][j];}}return s;}//sumvoid main(){// int *en;//声明数组指针//en=new int[0];//动态生成数组//int count=20;//int en[5][10];//en=new int[count];//build(en,count,99);//cre(en,5);//disp(en,5);//maopao(en,20,1);//upm(en,20);//downm(en,20);//upj(en,20);//downj(en,20);//cout<<sum(en,5);//disp(en,count);}*#35·链表函数//链表#include <>#include <>#include <>#include <iomanip> struct ts{char name[15]; char num[15]; struct ts *next; };ts *head;void main()head=Create(); //创建链表display(head);ts *t=new ts;strcpy(t->name,"王五");strcpy(t->num,"");add(head,t);display(head);//del(head,"王五");ts *r=new ts;strcpy(r->name,"王六");strcpy(r->num,"1");//inst(head,r);add(head,r);display(head);cout<<serch(head,2)->name<<endl; delh(head);delt(head);}*#36·动态数组#include<iostream>#include<vector>vector<int>b;//声明int i,m;for(i=0;i<20;i++)(i);for(i=0;i<20;i++)cout<<b[i]<<";";cout<<endl;// m=();//返回容器大小// m=();//判断是否为空// ();//删除容器的末元素,并不返回该元素。

相关主题