输入一组整型元素序列,建立顺序表,用C++编写的

1. 输入一组整型元素序列,建立顺序表。
2. 在该顺序表中查找某一元素,查找成功返回1,否则返回0。
3. 编写一个主函数,其中要有插入和删除算法,并调试上述算法。

第1个回答  2010-04-11
#include <iostream.h>

class List {
public:
int data;
List * next;
List * prev;
List(){next=NULL;prev=NULL;};
~List(){};
List(int a){data=a;next=NULL;prev=NULL;}
void setdata(int a){data=a;};
void insert(List * nod); //后插入节点
void add(List *nod); //链表添加节点
};
void List::add(List * nod)
{
List *p=this;
while((p->next)!=NULL){
p=p->next;
}
p->next=nod;
nod->prev=p;
}
void List::insert(List *nod)
{
List * p;
p=next;
next=nod;
nod->prev=this;
List * p1=nod;
while((p1->next)!=NULL){
p1=p1->next;
}
p1->next=p;
}

List * search(List *list, int c) //查找 值等于 c 的节点,返回指向该节点的指针 如果失败 返回 NULL
//只返回第一个符合条件的节点指针
//返回指针指比返回 1 0 有用得多
//完全可以作为成功与否的判断
{
List * p=list;
while(p){
if(c==p->data)return p;
p=p->next;
}
return NULL;
}

int main()
{
int a;
int n,m=1;
cout<<"please input the number of elements n:";
cin>>n;
List * list,*p,*q,*t;
if (n<=0){
cout<<"n>0 is required"<<endl;
return 0;
}
cout << "please input data "<<m<<"\t:";
cin>>a;
list=new List(a);

while(m<n){
q=list;m++;
cout << "please input data "<<m<<"\t:";
cin>>a;
p=new List(a); //申请一对象

while(q && (q->data < p->data)){ //查找合适位置
q=q->next;
}

if(q==NULL){ //以前得值都小,在链表后添加
list->add(p);
continue;
}

if((q->prev)==NULL){ //如果以前的值都大 在链首插入

t=list;
list=p;
t->prev=p;
list->next=t;
continue;
}

t=q->prev; //q 前是合适插入位置 , 前插入
t->next=p;
p->prev=t;
p->next=q;
q->prev=p;
}
q=list;
m=1;
cout<<"seq\tdata"<<endl;
while(q){
cout<<m<<"\t"<<q->data<<endl;
m++;q=q->next;
}
cout<<"输入要删除的数值";
cin>>a;
if((p=search(list,a))!=NULL){
if(p->prev=NULL){ //链首删除
list=p->next;
list->prev=NULL;
delete p;
}
}
}
please input the number of elements n:5
please input data 1 :33
please input data 2 :534
please input data 3 :23
please input data 4 :88
please input data 5 :4
seq data
1 4
2 23
3 33
4 88
5 534

后悔为你解答! 思维如此懒惰! 如何能学好
指让别人把一切为你做好?

输入一组整型元素序列,建立顺序表,用C++编写的
List * search(List *list, int c) \/\/查找 值等于 c 的节点,返回指向该节点的指针 如果失败 返回 NULL \/\/只返回第一个符合条件的节点指针 \/\/返回指针指比返回 1 0 有用得多 \/\/完全可以作为成功与否的判断 { List * p=list;while(p){ if(c==p->data)return p;p=p->next;} retu...

建立一个顺序表(数据元素为整型,表长为8)并显示顺序表中元素的初始值...
head = new struct list ;head->next=NULL ;\/\/创建表 crt_tab( head , n );\/\/输出表 prt_tab( head );\/\/释放表 free_tab( head );return 0;}

...1、创建一个顺序表,其数据元素类型为整型; 2、运行过程中,从键盘...
include<stdio.h> struct SQList\/*定义顺序表每个元素的结构*\/ { int data;struct SQList * next;};struct SQList * SQInsert(struct SQList * list)\/*插入一个元素*\/ { struct SQList * temp = list;\/*临时保存原先的list*\/ list = (struct SQList *)malloc(sizeof(struct SQList));...

用c语言,定义一个10个元素的整型顺序表,从键盘录入数据,然后对该顺序...
include <stdio.h>void main(){int a[10],i,j,k;printf("请输入10个数\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("输入的10个数为:");for(i=0;i<10;i++)printf("%3d",a[i]);printf("\\n");for(i=0;i<10;i++)for(j=i;j<10;j++)if(a[i]>a[j])...

...已排好序的整型数组,有10个元素,要求从键盘输入一个数后,按原来排序...
include <stdlib.h> include <stdio.h> int main(){ int a[20],i,n,x,k;printf("请输入一组顺序数(从小到大的顺序):");for( i=0; ;i++ ){ scanf("%d",&a[i]);if( getchar() == '\\n' )break;} n = i + 1; \/\/n表示数组内数字的个数 printf("请输入需要插入...

1. 对一个整型数组A[n]设计一个排序算法。 2. 找出整型数组A[n]中元...
首先c++algorithm库里面提供了sort函数支持排序。快排实现的。直接sort就可以了。对于最大和次大是可以通过一边扫描实现的。记录两个指针。max1,max2。保留目前位置的次大和最大。然后扫描的时候更新就行了。但是如果排完序的话,最大和次大就是A[N]和A[N-1](ps:如果是严格次大的话还是需要再...

c++定义一个有10个元素的整型一维数组,统计输出数组中所有奇数元素在数...
include <stdio.h> int main(){ int n,a[10],*p;for(p=a;p<a+10;p++)scanf("%d",p);printf("数组中奇数元素的序号是:\\n");for(p=a;p

用C语言编写一个有关顺序表的程序代码
int ListLength(SqList *L) \/* 求顺序表的长度 *\/ { return(L->length);} int ListEmpty(SqList *L) \/* 求顺序表是否为空 *\/ { return(L->length==0);} int GetElem(SqList *L,int i,ElemType e) \/*求顺序表中某个数据的元素值 *\/ { if(i<1||i>L->length)return ...

用C++ 定义长度为10的整型数组,通过键盘输入为数组元素依次赋值,然后...
{ int a[10];for(int i=0;i<10;i++)cin>>a[i];\/\/*依次输入10个数*\/\/ bool flag=true;\/\/*设置提前结束开关*\/\/ int j,k,r;\/\/*j控制外循环,k控制内循环,r作为交换用的暂存区*\/\/ for(j=0;j<9;j++)\/\/*排序*\/\/ { for(k=0;k<9-j;k++)if(a[k]>a[k+1]){ r=...

c++求答案,定义一个10个元素的整型数组,完成以下操作 1、让用户从键盘...
arr[k + 1] = iTmp;} } } } int main() { int arr[10];int i = 0;int max;int min;int iTmp;while(i < 10) { cin >> arr[i++];} max = 0;min = 0;for (i = 0; i < 10; ++i) { cout << arr[i] << " ";if (arr[i] > arr[max])max = i;if (...

相似回答