资源简介
南邮数据结构实验源码。内容包括线性表及多项式运算、二叉树基本操作的实现及哈夫曼、图的基本运算实现和最短路径问题、排序验证
代码片段和文件信息
#include
#include
typedef int ElemType;
typedef struct Node
{
ElemType element;
struct Node *link;
}Node; /*定义Node*/
typedef struct
{
struct Node *head;
int n;
}HeaderList; /*定义HeaderList*/
/*初始化*/
void Init(HeaderList *h)
{
h->head=(Node*)malloc(sizeof(Node));
if (!h->head)
printf(“初始化失败\n“);
h->head->link=NULL;
h->head->element=0;
h->n=0;
printf(“初始化完成\n“);
return ;
}
/*插入,在第i个位置后插入*/
void Insert(HeaderList *hint iElemType x)
{
int j;
if (i<-1 || i>h->n-1 )
printf(“插入位置不合理\n“);
Node *p*q;
p=h->head;
for (j=0;j<=i;j++)
p=p->link; /*找到插入位置,第i处*/
q=(Node*)malloc(sizeof(Node)); /*为q申请空间*/
q->element=x;
q->link=p->link;
p->link=q; /*插入成功*/
h->n++; /*更新长度值*/
printf(“插入成功\n“);
return ;
}
/*删除第i个元素*/
void Delete(HeaderList *hint i)
{
int j;
Node *p*q;
if(!h->n)
printf(“表空,没有删除项“);
if(i<-1||i>h->n-1)
printf(“下标不合法“);
p=h->head;
for(j=0;j p=p->link; /*找到要删除的前一项*/
q=p->link; /*q指向删除的结点*/
p->link=q->link; /*让q指结点脱离链表*/
free(q);
h->n--;
return ;
}
/*查找第i个元素,将值存到x中*/
void Find(HeaderList hint iElemType *x)
{
int j;
Node *p;
if (i<0 || i>h.n-1 )
printf(“下标不合法\n“);
p=h.head;
for (j=0;j p=p->link;
*x=p->link->element;
printf(“查找成功\n“);
return ;
}
/*输出函数*/
void Display(HeaderList h)
{
if(h.n==0)
{
printf(“表空!\n“);
}
Node *p=h.head;
while(p->link)
{
p=p->link;
printf(“%d “p->element);
}
printf(“\n“);
}
/*撤销函数*/
void Destroy(HeaderList *h)
{
Node *p;
while (h->head->link)
{
p=h->head->link;
free(h->head);
h->head=p;
h->n--;
}
return ;
}
/*逆置链表*/
void Inverse(HeaderList *h)
{
if(h->n==0||h->n==1)
printf(“无须逆置\n“);
Node *p1*p2*p3;
p1=h->head;
p2=p1->link;
while(p2)
{
p3=p2->link;
p2->link=p1;
p1=p2;
p2=p3;
}
h->head->link->link=NULL;
h->head->link=p1;
printf(“逆置成功\n“);
return ;
}
/*主函数*/
int main()
{
int i;
int x;
int mn;
HeaderList h1;
Init(&h1);
for (i=0;i<10;i++)
Insert(&h1i-1i+1);
printf(“输出初始化列表:\n“);
Display(h1);
printf(“在第m个位置后插入元素n,请输入mn:\n“);
scanf(“%d%d“&m&n);
Insert(&h1mn);
Display(h1);
Inverse(&h1);
printf(“输出逆置后:\n“);
Display(h1);
printf(“删除第m个元素,输入m:\n“);
scanf(“%d“&m);
Delete(&h1m);
Display(h1);
printf(“查找第m个元素,输入m:\n“);
scanf(“%d“&m);
Find(h1m-1&x);
printf(“查找结果:“);
printf(“%d\n“x);
Destroy(&h1);
printf(“撤销链表后输出:\n“);
Display(h1);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-03-10 20:03 数据结构实验\
目录 0 2019-03-10 20:03 数据结构实验\数据结构实验一\
文件 3049 2019-03-10 18:47 数据结构实验\数据结构实验一\HeaderList.cpp
文件 4678 2019-03-10 18:51 数据结构实验\数据结构实验一\polynominal.cpp
文件 2165 2019-03-10 18:46 数据结构实验\数据结构实验一\SeqList.cpp
目录 0 2019-03-10 20:03 数据结构实验\数据结构实验三\
文件 9530 2019-03-10 19:43 数据结构实验\数据结构实验三\图的邻接表实现加Dijkstra实现.cpp
文件 7659 2019-03-10 19:34 数据结构实验\数据结构实验三\带权值的有向图(邻接矩阵).cpp
文件 0 2019-03-10 19:35 数据结构实验\数据结构实验三\记得更改cpp文件的名字(中文改成英文).txt
目录 0 2019-03-10 20:03 数据结构实验\数据结构实验二\
文件 9775 2019-03-10 19:18 数据结构实验\数据结构实验二\BiTree.cpp
文件 2418 2019-03-10 19:21 数据结构实验\数据结构实验二\HFMTree.cpp
目录 0 2019-03-10 20:03 数据结构实验\数据结构实验四\
文件 6194 2019-03-10 19:50 数据结构实验\数据结构实验四\main.cpp
文件 0 2019-03-10 19:51 数据结构实验\数据结构实验四\排序验证.txt
- 上一篇:南邮算法实验之动态规划法
- 下一篇:AT89C51流水灯
评论
共有 条评论