永发信息网

据结构(C语言版) 各操作实现程序

答案:1  悬赏:70  手机版
解决时间 2021-05-14 04:23

最近在学数据结构,头都搞大了!按书本所说写了些代码就是编译不成功!

所以求各操作实现程序,比如三元组、线性表、栈、队列、串、数组、广义表、树、二叉树等各操作实现的完整代码,有点多,还望某位高人帮帮忙!小弟感激不尽!

我的邮箱是:1103824744@qq.com(完全发的话有点多,呵呵,贴出来很长,直接发给我.doc\.chm\.rar更好)!!谢谢!!

最佳答案

线性表




#include "stdafx.h"


#include<stdio.h>
#include<stdlib.h>


typedef char ListItem;
typedef struct node *link;
typedef struct node{ListItem element;link next;}Node;
typedef struct llist *List;
typedef struct llist{link first;}Llist;


void Error(char *s)
{
printf("%s\n",s);
exit(1);
}
link NewNode()
{
link p;
if((p=(node*)malloc(sizeof(node)))==0) Error("Exhaused memory.");
else return p;
}


List ListInit()
{
List L=(llist*)malloc(sizeof(llist));
L->first=0;
return L;
}
int ListEmpty(List L)
{
return L->first==0;
}
int ListLength(List L)
{
int len=0;
link p;
p=L->first;
while(p){len++;p=p->next;}
return len;
}
ListItem ListRetrieve(int k,List L)
{
int i=1;
link p;
if(k<1)
Error("out of bounds");
p=L->first;
while(i<k&&p)
{
p=p->next;
i++;
}
return p->element;
}
int ListLocate(ListItem x,List L)
{
int i=1;
link p;
p=L->first;
while(p&&p->element!=x){p=p->next;i++;}
return p?i:0;
}
void ListInsert(int k,ListItem x,List L)
{
link p,y;
int i;
if(k<0)
Error("out of bounds");
p=L->first;
for(i=1;i<k&&p;i++)
p=p->next;
if(i<k)
{
Error("out of bounds");
exit(1);
}
else
{
y=NewNode();
y->element=x;
if(k){
y->next=p->next;
p->next=y;
}
else
{
y->next=L->first;
L->first=y;
}
}


}
ListItem ListDelete(int k,List L)
{
link p,q;
ListItem x;
int i;
if(k<1||!L->first)Error("out of bounds");
p=L->first;
if(k==1)L->first=p->next;
else
{
q=L->first;
for(i=1;i<k-1&&q;i++)
{
q=q->next;
}
if(i<k)
{
Error("out of bounds");
exit(0);
}


p=q->next;
q->next=p->next;
}
x=p->element;
free(p);
return x;


}
void PrintList(List L)
{
link p;
printf("L is:");
for(p=L->first;p;p=p->next)
printf("%c",p->element);
printf("\n");
}
List ListFactory(char *s)
{
List L=ListInit();
int i=0;
while(s[i]!='\0')
{
ListInsert(i,s[i],L);
i++;
}
return L;
}


int main(int argc, char* argv[])
{
char string[50],c;
int n;
for(int i=0;i<50;i++)
string[i]='\0';
printf("Please input a string:\n");
gets(string);
List L1=ListFactory(string);
PrintList(L1);
printf("Please input a character and position you want to insert,e.g. a,3\n");
scanf("%c,%d",&c,&n);
ListInsert(n,c,L1);
PrintList(L1);

printf("Please input a position you want to delete,e.g. 3\n");
scanf("%d",&n);
ListDelete(n,L1);
PrintList(L1);


return 0;
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
鹤城区黄金坳爱卫办地址是什么,有没有知道的
有高手把小说诛仙中出现的人物的武器说一下吗
八仙过海歇后语下半句,求十字以内的古风诗句
为什么坐车头晕?
诺贝尔是出生于哪一个国家?
怎么编辑短信下载手机QQ
QQ农行进不去,显示错误信息。这是什么问题。
电容容抗的计算方法举例说明
怎么才能消肿?
如何用手机在QQ空间打繁体字
4分之1加4分之3乘9分之2减9分之1=9分之1 (
鄂城区鄂州市鄂城区杨叶镇福利院地址是什么,
美国人为什么这么开放啊
黑洞和白洞是什么
道外区东辕门这个地址怎么能查询到,着急去办
推荐资讯
东安县北方饺子王地址在什么地方,想今天过去
如何变成一个乖乖女
幸福的前提是什么!
请问她是谁啊?叫什么名字?
同志们帮我取个网名
急!!!我的移动硬盘分了两个区,一个能显示
夜晚睡不着,该怎样打发时间?
80后女生,做什么样的工作比较合适?
米卢曾经带领几支队伍参加过世界杯
郑州碧沙岗西门到京广鞋城坐几路公交车
描写秋日夕阳的句子
狐假虎威用英语怎么说
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?