| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 530 人关注过本帖
标题:[原创]我做的一个程序,希望大家能让它更完备一下
只看楼主 加入收藏
jackeyhlj
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:51
专家分:0
注 册:2007-3-27
收藏
 问题点数:0 回复次数:0 
[原创]我做的一个程序,希望大家能让它更完备一下

#include<iostream>
using namespace std;
#define NULL 0
struct node{
int data;
struct node *next;
};
node *p,*q,*s,*head;
void create( ){ //创建单链表
int x;
node *ptr;
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
p=head;
cout<<"\nx=?";
cin>>x;
while(x!=0){ //以0为结束标志
ptr=(struct node*)malloc(sizeof(struct node));
ptr->data=x;
ptr->next=NULL;
p->next=ptr;
p=ptr;
cout<<"x=?";
cin>>x;
}
}
void pandan(node *h){ //判断单链表是否存在
if(h==NULL){
cout<<"单链表不存在!请创建单链表:";
create();
}
}
void outline(node *h){ //输出单链表
p=h->next;
while(p!=NULL)
{
cout<<"\ndata="<<p->data;
p=p->next;
}
cout<<"\n输出结束!\n";
}
void insert(node *h,int x,int y){ //在值为x的结点前插入枝y
s=(struct node*)malloc(sizeof(struct node));
s->data=y;
q=h;
p=h->next;
while(p!=NULL&&p->data!=x)
{
q=p;
p=p->next;
}
q->next=s;
s->next=p;
}
void Delete(node *h,int x){ //删除值为x的结点
q=h;
p=q->next;
while((p!=NULL)&&(p->data!=x)){
q=p;
p=p->next;
}
if(p==NULL)
cout<<"你输入的x不存在!";
else{
q->next=p->next;
free(p);
}
}
void countnode(node *h){ //输出单链表的长度
int length=0;
for(p=h;p->next!=NULL;p=p->next)
length++;
cout<<"单链表的长度为:length="<<length;
}
void found(node *h){ //找出结点所有值为X的序号
int x;
cout<<"请输入x:";
cin>>x;
int n=0;
while(h->next!=NULL){
n++;
if(h->next->data==x)
cout<<n<<" ";
h=h->next;
};

}
int main(){
int i,x,y,cord;
for(i=1;i>0;i++){
do{
cout<<" \n 主菜单 ";
cout<<" \n 1 建立单链表 ";
cout<<" \n 2 插入一个元素 ";
cout<<" \n 3 删除一个元素 ";
cout<<" \n 4 统计结点 ";
cout<<" \n 5 查找元素 ";
cout<<"\n-------------------------";
cout<<"\n 请输入你的选择(1,2,3,4,5,6)";
cin>>cord;
if(cord>6||cord<1) //判断输入的数字是否在1—6之间
cout<<"你的输入有误,请重新输入:";
if(cord>1&&cord<=6)
pandan(head); //判断单链表是否存在
switch(cord)
{
case 1:{ //创建单链表并输出
create();
outline(head);
}break;
case 2:{ //在值为x的结点前插入y
cout<<"请输入x:";
cin>>x;
cout<<"请输入y:";
cin>>y;
insert(head,x,y);
outline(head);
}break;
case 3:{ //删除值为x的结点
cout<<"请输入x:";
cin>>x;
Delete(head,x);
outline(head);
}break;
case 4:{ //输出单链表的长度
countnode(head);
}break;
case 5:{
found(head); //找出所有值为x的结点的序号
}break;
case 6:exit(0); //结束程序
}
}while(cord<=6&&cord>=1);
}
return 0;
}




搜索更多相关主题的帖子: include create 
2007-04-12 13:40
快速回复:[原创]我做的一个程序,希望大家能让它更完备一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025358 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved