用C语言建立 线性表## *指针法*

球球同学正在学习数据结构,用指针建立顺序表的代码分享给大家!
包括总代码,运行结果,和具体分析!如果有错误,欢迎大家指正!

总代码:

#include 
#include      //malloc函数必须要在stdlib.h头文件下; 
typedef int ElemType;   //ElemType定义为int型; 
#define List_size 50
typedef struct          //重点 
{
 ElemType *elem;  //储存空间基地址 
 int length;   //当前的长度 
 int listsize;  //每次分配到的长度,我的是 50 
}Sqlist;                // 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void  init(Sqlist *p,int k)   //初始化 
{
 int i;
 p->elem=(ElemType *)malloc(sizeof(ElemType)*List_size);
 if(k)
  printf("Data;");
 for(i=0;ielem[i]); 
 p->length=k;
 p->listsize=List_size;
 return;
}
void hebing(Sqlist *p,Sqlist *q)    //合并两个表,
{
 int i,j,k,x;
 for(i=0;ilength;i++)
 {
  x=q->elem[i];
  if(seat(p,x)==0)
  {
   p->elem[p->length++]=x;
  }
 }
 printf("输入合并后的序列\n");
}
int seat(Sqlist p,ElemType x)       //进行寻找,表中是否含有这个元素 
{
 int flag=0,i;
 for(i=0;iright)
 {
  return;
 }
 i=left;
 j=right;
 temp=p->elem[i];
 while(i!=j)
 {
  while(p->elem[j]>=temp&&ielem[i]<=temp&&ielem[i];
   p->elem[i]=p->elem[j];
   p->elem[j]=k; 
  }
 }
 p->elem[left]=p->elem[i];
 p->elem[i]=temp;
 quicksort(p,left,i-1);
 quicksort(p,i+1,right);
 return;
 } 
void insert(Sqlist *p)//插入一个元素
{
 int i=0,j;
 ElemType e;
 printf("请输入插入的数:");
 scanf("%d",&e);
 while(seat(*p,e)==1) 
 {
  printf("重复,请重新输入:");
  scanf("%d",&e); 
 }
 while(p->elem[i]length++;
 for(j=p->length-1;j>i;j--)
  p->elem[j]=p->elem[j-1];
 p->elem[i]=e;
 printf("加入后的序列:\n");
 quicksort(p,0,p->length-1); 
}
void dele(Sqlist *p)//删除一个元素
{
 int i=0,j;
 ElemType e; 
 printf("请输入删除的数:");
 scanf("%d",&e);
 while(!seat(*p,e))
 {
  printf("没有这个数!!\n请重新输入:");
  scanf("%d",&e);
 }
 while(p->elem[i]!=e)
  i++;
 j=i;
 for(j=i;jlength-2;j++)
  p->elem[j]=p->elem[j+1];
 p->length--;
 printf("删除后的序列是:\n");
}
int main(int argc, char *argv[]) {
 
 Sqlist L1,L2,L3;
 init(&L1,4);
 init(&L2,4);
 hebing(&L1,&L2);
 showlist(L1);
 quicksort(&L1,0,L1.length-1);
 printf("整理后的序列为:\n"); 
 showlist(L1);
 insert(&L1);
 showlist(L1);
 dele(&L1);
 showlist(L1); 
 return 0;
}

运行结果:
用C语言建立 线性表## *指针法*_第1张图片
主函数:
用C语言建立 线性表## *指针法*_第2张图片
建立线性表:
用C语言建立 线性表## *指针法*_第3张图片
接下来是初始化线性表: 注意k是我想要插入的长度,可以改变
用C语言建立 线性表## *指针法*_第4张图片
接下来是合并两个线性表: ( 用的是指针,因为指针代表地址 )把L2合并入L1;
seat()函数的作用是判断表L1中是否含有那个当前的元素
用C语言建立 线性表## *指针法*_第5张图片这是展示函数showlist():
用C语言建立 线性表## *指针法*_第6张图片

接下来对合并后的表进行排序: 这里我使用的是快速排序(不知道的小伙伴要加油La!)
用C语言建立 线性表## *指针法*_第7张图片接下来是插入函数:先找到属于e的位置,然后把后面的元素全部向后移动
用C语言建立 线性表## *指针法*_第8张图片
最后是删除函数dele():先找到那个元素,然后把后面的元素窦向前移动一个单位
用C语言建立 线性表## *指针法*_第9张图片
这就是球球同学的代码啦,学习之路永无终点,一起努力;

你可能感兴趣的:(C++)