数据结构实验:线性表(1)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构实验:线性表(1)相关的知识,希望对你有一定的参考价值。
要求:
1.顺序结构实现实现线性表的所有方法
2.在main方法中调用线性表的各个方法,并显示调用结果,其中:
typedef struct Student
char name[10];
int age;
Student;
typedef int Status;
typedef Student ElemType;//也可以选择别的有意义的数据
typedef struct LNode
ElemType data;
struct LNode *next;
LNode, *LinkList;
PSeqList createNullList_seq(int m)
PSeqList palist =(PSeqList)malloc(sizeof(struct SeqList));
if (palist!=NULL)
palist->element=(DataType*)malloc(sizeof(DataType)*m);
if (palist->element)
palist->MAXNUM=m;
palist->n=0;
return palist;
else free (palist);
printf("Out of space!! \n");
return NULL;
/*2.2判断线性表是否为空*/
int isNullList_seq(PSeqList palist)
return(palist->n==0);
/*2.3顺序表删除*/
int deleteP_seq(PSeqList palist,int p)
int q;
if(p<0 || p>palist->n-1)
printf("Not exist!\n");
return 0;
for (q=p;q<palist->n-1;q++)
palist->element[q]=palist->element [q+1];
palist->n=palist->n-1;
return 1;
/*2.4在顺序表中求某元素的下标*/
int locate_seq(PSeqList palist,DataType X)
int q;
for (q=0;q<palist->n;q++)
if(palist->element[q]==X)return q;
return -1;
/*2.5顺序表的前插入*/
int insertPre_seq(PSeqList palist,int p,DataType X)
int q;
if(palist->n >=palist->MAXNUM)
printf("Overflow! \n");
return 0;
if(p<0 || p>palist->n)
printf("Not exist! \n");
return 0;
for(q=palist->n-1;q>=p;q--)
palist ->element[q+1]=palist ->element[q];
palist->element[p]=X;
palist->n=palist ->n+1;
return 1;
//2.6遍历palist所指所有元素的值
void print_seq(PSeqList palist)
int i;
if(palist != NULL)
for(i=0;i<palist->n;i++)
printf("out of element:%d\n",palist->element[i]);
printf("\n\n");
//2.7线性表排序
void sort_seq(PSeqList palist)
int i,j;
DataType x;
for(i=1;i<palist->n;i++)
x=palist->element[i];
for(j=i-1;j>=0;j--)
if(x<palist->element[j])
palist->element[j+1]=palist->element[j];
else
break;
palist->element[j+1]=x;
/*2.8顺序表的后插*/
int insertPost_seq(PSeqList palist,int p,DataType X)
int q;
if(palist->n >=palist->MAXNUM)
printf("Overflow! \n");
return 0;
if(p<0 || p>palist->n)
printf("Not exist! \n");
return 0;
for(q=palist->n-1;q>p;q--)
palist ->element[q+1]=palist ->element[q];
palist->element[p+1]=X;
palist->n=palist ->n+1;
return 1;
/*2.9尾插*/
int insertRear(PSeqList palist,DataType x)
if(palist->n==palist->MAXNUM)
printf("\n List overflow!");
return(0);
palist->element[palist->n]=x;
palist->n++;
return(1);
/*2.10头插*/
int insertHead(PSeqList palist,DataType x)
int q;
if(palist->n==palist->MAXNUM)
printf("\n List overflow!");
return(0);
for(q=palist->n-1;q>=0;q--)
palist ->element[q+1]=palist ->element[q];
palist->element[0]=x;
palist->n++;
return(1);
/*2.11头删*/
int deleteHead(PSeqList palist)
int q;
for (q=0;q<palist->n-1;q++)
palist->element[q]=palist->element [q+1];
palist->n=palist->n-1;
return 1;
/*2.12尾删*/
int deleteRear(PSeqList palist)
palist->n--;
return(1);
参考技术B #include<stdio.h>
#define ERROR 0
#define OVERFLOW -2
#define LIST_SIZE 20
typedef int ElemType;
typedef struct List
ElemType elem[LIST_SIZE];
int length;
SqList;
int ListInsert(SqList *L,int i,ElemType e)
int j;
if(i<0||i>L->length+1)
return ERROR;
if(L->length>=LIST_SIZE)
return OVERFLOW;
for(j=L->length-1;j>=i-1;j--)
L->elem[j+1]=L->elem[j];
L->elem[i-1]=e;
++L->length;
void Union(SqList *La,SqList Lb)
int i,j;
ElemType e1,e2;
for(j=1;j<=Lb.length;j++)
e2=Lb.elem[j-1];<br/> for(i=1;i<=La->length;i++)<br/> e1=La->elem[i-1];<br/> if(e1==e2)<br/> break;<br/>
if(i==La->length+1)
ListInsert(La,La->length+1,e2);
void MergeList(SqList La,SqList Lb,SqList *Lc)
int i=1,j=1,k=0;
while(i<=La.length&&j<=Lb.length)
if(La.elem[i-1]<=Lb.elem[j-1])
ListInsert(Lc,++k,La.elem[i-1]);
++i;
else
ListInsert(Lc,++k,Lb.elem[j-1]);
++j;
while(i<=La.length)
ListInsert(Lc,++k,La.elem[i-1]);
i++;
while(j<=Lb.length)
ListInsert(Lc,++k,Lb.elem[j-1]);
j++;
Lc->length=k;
void print(SqList L)
int i;
for(i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
printf("\n");
void main()
SqList La,Lb,Lc;
int j;
ElemType e;
La.length=0;
for(j=1;j<=5;j++)
La.elem[j-1]=j;<br/> La.length++;
/* clrscr(); */
printf("La= ");
print(La);
Lb.length=0;
for(j=1;j<=5;j++)
Lb.elem[j-1]=j*2;<br/> Lb.length++;
printf("Lb= ");
print(Lb);
Union(&La,Lb);
printf("new La= ");
print(La);
Lc.length=0;
MergeList(La,Lb,&Lc);
printf("Lc= ");
print(Lc);
这是链表的基本用法 希望能帮助你 其他 的自己加进去。。 参考技术C http://download.csdn.net/user/zxz414644665/all/1到这个地址去看看,我把它传上去了,应该是你要的东西
SDUT 3379 数据结构实验之查找七:线性之哈希表
数据结构实验之查找七:线性之哈希表
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。
Input
连续输入多组数据,每组输入数据第一行为两个正整数N(N <= 1000)和p(p >= N的最小素数),N是关键字总数,p是hash表长度,第2行给出N个正整数关键字,数字间以空格间隔。
Output
输出每个关键字在hash表中的位置,以空格间隔。注意最后一个数字后面不要有空格。
Example Input
5 5 21 21 21 21 21 4 5 24 15 61 88 4 5 24 39 61 15 5 5 24 39 61 15 39
Example Output
1 1 1 1 1 4 0 1 3 4 0 1 2 4 0 1 2 0
DQE:
水题233
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int n,p; 5 6 int insert(int *f,int k) 7 { 8 int h=k%p; 9 int i=1,j=h; 10 while(f[j]!=0&&f[j]!=k) 11 j=(h+i++)%p; 12 f[j]=k; 13 return j; 14 } 15 16 int main() 17 { 18 while(scanf("%d %d",&n,&p)!=EOF) 19 { 20 int hash[2011]={0}; 21 int i; 22 for(i=0;i<n;i++) 23 { 24 int k; 25 scanf("%d",&k); 26 printf("%d%c",insert(hash,k),i==n-1?‘\n‘:‘ ‘); 27 } 28 } 29 return 0; 30 } 31 32 /*************************************************** 33 User name: *** 34 Result: Accepted 35 Take time: 0ms 36 Take Memory: 156KB 37 Submit time: 2016-12-03 13:12:56 38 ****************************************************/
以上是关于数据结构实验:线性表(1)的主要内容,如果未能解决你的问题,请参考以下文章