|
|
#2
树上月2010-04-01 16:42
我编了一个简单的:其中包括,插入,遍历,删除,查找。希望对你有帮助
// efgghh.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include"stdlib.h" struct Sqlist{ int *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量 }; //构造一个空的线性链表 void Sq(Sqlist &lm){ lm.elem=(int *)malloc(10*sizeof(int)); if(!lm.elem) return ; lm.length=0; //空间长度为0 lm.listsize=10; //初始存储容量 return ; }; //创建链表 void CreatSqlist(Sqlist &lm){ int number; scanf("%d",&number); do{ lm.elem[lm.length]=number; lm.length++; scanf("%d",&number); }while(number!=-1); } //遍历顺序表 void searchSqlist(Sqlist &lm) { int i; for(i=0;i<lm.length;i++) printf("第%d个元素是:%d\n",i+1,lm.elem[i]); } //处理顺序表 (基数全部位于偶数前) void SWapSqlist(Sqlist &lm) { int a[100]; for(int i=0,j=0;i<lm.length;i++){ if(lm.elem[i]%2==1){ a[j] =lm.elem[i]; j++; } } for(i=0;i<lm.length;i++){ if(lm.elem[i]%2==0){ a[j]=lm.elem[i]; j++; } } for(i=0;i<lm.length;i++) printf("%d ",a[i]); } //在顺序表中插入元素 void InsertSqlist(Sqlist &lm,int number ,int i) { int *q,*p; if(i<1||i>lm.listsize){ //i值不合法 printf("插入位置不合法!"); return ; } //存储空间已满,增加分配 if(lm.length>lm.listsize){ lm.elem=(int *)realloc(lm.elem, (lm.listsize+10)*sizeof(int)); if(!lm.elem) //存储分配失败 return ; lm.listsize =lm.listsize+10; //增加存储容量 lm.elem[i] = number; } //表不满,直接插入 q=&(lm.elem[i-1]); //q为插入的位置 for(p=&(lm.elem[lm.length-1]);p>=q;--p) *(p+1)=*p; //插入位置及以后的元素全部右移 *q=number; ++lm.length; //表长加1 for(i=0;i<lm.length;i++) printf("%d ",lm.elem[i]); } //在顺序表中删除元素 void DeleteSqlist(Sqlist &lm,int number) { int i,k; for(i=0;i<=lm.length;i++){ if(number==lm.elem[i]){ for(k=i;k<=lm.length;k++) lm.elem[k]=lm.elem[k+1]; //删除位置及其以后的元素全部左移 break; } } lm.length--; //表长减1 if(i==lm.length) printf("没有该数!"); for(i=0;i<lm.length;i++) printf("%d ",lm.elem[i]); } //在顺序表中查找 int SearchSqlist(Sqlist &lm,int number) { int i; for(i=0;i<lm.length;i++){ if(number==lm.elem[i]) return i+1; } if(i==lm.length) return 0; } int main(int argc, char* argv[]) { int i,number,lb,lc,e; Sqlist lm; Sqlist elem[100]; Sq(lm); printf("elem的地址为:%d\n",lm.elem); printf("length=%d\n",lm.length); printf("listsize=%d\n",lm.listsize); printf("输入一串数字(以-1结束):"); CreatSqlist(lm); //调用创建函数 searchSqlist(lm); //调用遍历函数 //对顺序表处理 printf("对该表进行处理(基数全部位于偶数前)后:"); SWapSqlist(lm); //调用处理函数 printf("\n"); //在顺序表中插入数字 printf("请输入你要插入的数:"); scanf("%d",&number); printf("请输入你要插入的位置:"); scanf("%d",&i); InsertSqlist(lm,number,i); //调用插入函数 printf("\n"); //在顺序表中删除元素 printf("请输入你要删除的元素:"); scanf("%d",&lb); DeleteSqlist(lm,lb); //调用删除函数 printf("\n"); //在顺序表中查找元素 printf("请输入你要查找的数字:"); scanf("%d",&lc); e=SearchSqlist(lm,lc); //e接受返回值 if(e==0) printf("没有该数!"); else printf("%d在顺序表中的位置是:第%d个",lc,e); printf("\n"); //printf("Hello World!\n"); return 0; } |
要求一道上机实验题题,输入一组整数,存放到单链表中,并进行排序,插入,显示。我把要用的函数写出来了,就是不知道怎样进行连接呢?困惑中……求高手指点,最好带个简单的例子说明下。

