最近在学数据结构,头都搞大了!按书本所说写了些代码就是编译不成功!
所以求各操作实现程序,比如三元组、线性表、栈、队列、串、数组、广义表、树、二叉树等各操作实现的完整代码,有点多,还望某位高人帮帮忙!小弟感激不尽!
我的邮箱是:1103824744@qq.com(完全发的话有点多,呵呵,贴出来很长,直接发给我.doc\.chm\.rar更好)!!谢谢!!
最近在学数据结构,头都搞大了!按书本所说写了些代码就是编译不成功!
所以求各操作实现程序,比如三元组、线性表、栈、队列、串、数组、广义表、树、二叉树等各操作实现的完整代码,有点多,还望某位高人帮帮忙!小弟感激不尽!
我的邮箱是: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;
}