
计算机编程高手来帮个忙啊!!!感谢!!!
我本来最讨厌的就是计算机,尤其是编程,结果没想到啊!误打误撞的进了哥计算机专业,所以自己也没兴趣学习,完全不懂那些什么编程!最基本的都不会,因为我上课很少听,哪位帮个忙啊...
我本来最讨厌的就是计算机,尤其是编程,结果没想到啊!误打误撞的进了哥计算机专业,所以自己也没兴趣学习,完全不懂那些什么编程!最基本的都不会,因为我上课很少听,哪位帮个忙啊看哈我的第一道实验题,我该怎么做?
(一) 编写一个程序ALGO2-1.CPP,实现顺序表的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1) 初始化顺序表L;
(2) 依次采用尾插法插入a,b,c,d,e
(3) 输出顺序表L;
(4) 输出顺序表L长度;
(5) 判断顺序表L是否为空;
(6) 判断顺序表L 的第3个元素;
(7) 输出元素‘a’的位置;
(8) 在第4个元素位置上插入‘f’元素;
(9) 输出顺序表L;
(10) 删除L的第3个元素;
(11) 输出顺序表L;
(12) 释放顺序表L;
(二) 编写一个程序ALGO2-2.CPP,实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1) 初始化单链表H;
(2) 依次采用尾插法插入a,b,c,d,e元素;
(3) 输出单链表h;
(4) 输出单链表h的长度;
(5) 判断单链表h是否为空;
(6) 输出单链表h的第三个元素;
(7) 输出元素‘a’的位置;
(8) 在第4个元素位置上插入‘f’元素;
(9) 输出单链表h;
(10) 删除L的第3个元素;
(11) 输出单链表h;
(12) 释放单链表h;
非常感谢啊!!!我确实不知道这些东西!!!谢谢!! 展开
(一) 编写一个程序ALGO2-1.CPP,实现顺序表的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1) 初始化顺序表L;
(2) 依次采用尾插法插入a,b,c,d,e
(3) 输出顺序表L;
(4) 输出顺序表L长度;
(5) 判断顺序表L是否为空;
(6) 判断顺序表L 的第3个元素;
(7) 输出元素‘a’的位置;
(8) 在第4个元素位置上插入‘f’元素;
(9) 输出顺序表L;
(10) 删除L的第3个元素;
(11) 输出顺序表L;
(12) 释放顺序表L;
(二) 编写一个程序ALGO2-2.CPP,实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1) 初始化单链表H;
(2) 依次采用尾插法插入a,b,c,d,e元素;
(3) 输出单链表h;
(4) 输出单链表h的长度;
(5) 判断单链表h是否为空;
(6) 输出单链表h的第三个元素;
(7) 输出元素‘a’的位置;
(8) 在第4个元素位置上插入‘f’元素;
(9) 输出单链表h;
(10) 删除L的第3个元素;
(11) 输出单链表h;
(12) 释放单链表h;
非常感谢啊!!!我确实不知道这些东西!!!谢谢!! 展开
展开全部
#include <stdio.h>
typedef char datatype;
#define maxsize 10
typedef struct
{char data[maxsize];
int last;
}list;
//
void printlist(list *L)
{int j;
for(j=0;j<=L->last-1;j++)
printf("%c",L->data[j]);
}
//
char creatlist(list *L)
{datatype ch;
int i=0;
L->last=0;
ch=getchar();
while(ch!='\n')
{L->data[i]=ch;
L->last++;
i++;
ch=getchar();
}
printf("顺序表的长度是%d\n",L->last);
printf("建立链表后链表的输出为\n");
printlist(L);
}
//
int inseret(list *L,int a,char key)
{
int j;
char ch;
if(j<0||j>L->last)
printf("\n非法位置\n");
if(L->last>=maxsize)
{printf("\n表溢出\n");
return 0;
}
for(j=L->last-1;j>=a-1;j--)
L->data[j+1]=L->data[j];
L->data[a-1]=key;
L->last++;
printf("\n插入元素后的输出为\n");
printlist(L);
}
int deleat(list *L,int a)
{
int i;
for(i=a-1;i<=L->last-1;i++)
L->data[a-1]=L->data[a];
printf("\n删除第%d个元素后表的输出为\n",a);
printlist(L);
}
//
int panduan(list *L)
{
if(L->last==0)
printf("\n表为空\n");
else
printf("\n表不为空\n");
return 0;
}
int get(list *L,int a)
{
if(L->last>=a)
printf("第%d个元素是%c",a,L->data[a-1]);
else
printf("第三个元素不存在\n");
return 0;
}
int Get(list *L,char n)
{
int i;
for(i=0;i<L->last;i++)
if(L->data[i]==n)
printf("\n%c元素的位置是第%d个元素",n,i+1);
return 0;
}
main(void)
{
list *L;
datatype ch;
creatlist(L);/*创建链表并插入元素*/
panduan(L);//判断表是否为空
get(L,3);//查找第三个元素
Get(L,'a');//查找a元素的位置
inseret(L,4,'f');//在第四个位置上插入f
deleat(L, 3);//删除第三个元素
printf("\n"); /*插入元素并排列*/
}
#include <stdio.h>
#include<stdlib.h>
typedef char datatype;
typedef struct zimu
{datatype data;
struct zimu *next;
}list;
//
int getlist(list *head,int j)
{
list *p;
int i=1;
for(p=head->next;p!=NULL;)
{if(j==i)
{
printf("\n第三个结点是 %c",p->data);
break;
}
p=p->next;
i++;
}
}
//
int Getlist(list *head,char key)
{
list *p;
int i=1;
p=head->next;
for(;p!=NULL;)
{if(p->data!=key)
{
p=p->next;
i++;
}
else break;
}
printf("\n%c元素所在的结点数是%d",key,i);
}
//
int insertlist(list *head,int i,char key)
{
list *p,*s;int j=1;
p=head->next;
for(;p!=NULL;)
{
p=p->next;
j++;
if(i-1==j)break;
}
s=(list *)malloc(sizeof(list));
s->data=key;
s->next=p->next;
p->next=s;
p=head->next;
printf("\n插入 %c 结点后链表输出为\n",key);
for(;p!=NULL;)
{
printf("%c",p->data);
p=p->next;
}
}
//
void deleatlist(list *head, int i)
{
list *p,*r;
int j;
p=head;
for(j=1;j!=i;j++)
p=p->next;
r=p->next;
p->next=r->next;
free(r);
printf("\n删除第三个结点后链表的输出为\n");
for(p=head->next;p!=NULL;)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
//
int freelist(list *head)
{
list *p;
while(head!=NULL)
{
p=head;
head=head->next;
free(p);
}
}
//
void panduan(list *head)
{
list *p;
p=head->next;
if(p==NULL)printf("链表为空");
else printf("链表不为空");
}
//
list *creatlist()
{
list *p,*r,*head;
datatype ch;
int size=0;
head=(list *)malloc(sizeof(list));//分配头结点
head->next=NULL;
r=head;
printf("输入A,B,C,D,E\n");
ch=getchar(); //插入结点
while(ch!='\n')
{
p=(list *)malloc(sizeof(list));
(*p).data=ch;
(*r).next=p;
r=p;
ch=getchar();
size++;
}
(*r).next=NULL;
printf("链表建立后的输出为\n");//输出链表
for(p=head->next;p!=NULL;)
{
printf("%c",p->data);
p=p->next;
}
printf("当前链表的结点个数是%d\n",size);//链表的个数
return head;
}
//
main(void)
{
list *head;
head=creatlist();//建立单链表
panduan(head);//判断链表是否为空
getlist(head,3);//查找打三个结点
Getlist(head,'A');//输出A元素的位置
insertlist(head,4,'F');//在第四个结点位置上插入F (后插法)
deleatlist(head,3) ;//删除第三个元素
freelist(head);//释放链表
}
typedef char datatype;
#define maxsize 10
typedef struct
{char data[maxsize];
int last;
}list;
//
void printlist(list *L)
{int j;
for(j=0;j<=L->last-1;j++)
printf("%c",L->data[j]);
}
//
char creatlist(list *L)
{datatype ch;
int i=0;
L->last=0;
ch=getchar();
while(ch!='\n')
{L->data[i]=ch;
L->last++;
i++;
ch=getchar();
}
printf("顺序表的长度是%d\n",L->last);
printf("建立链表后链表的输出为\n");
printlist(L);
}
//
int inseret(list *L,int a,char key)
{
int j;
char ch;
if(j<0||j>L->last)
printf("\n非法位置\n");
if(L->last>=maxsize)
{printf("\n表溢出\n");
return 0;
}
for(j=L->last-1;j>=a-1;j--)
L->data[j+1]=L->data[j];
L->data[a-1]=key;
L->last++;
printf("\n插入元素后的输出为\n");
printlist(L);
}
int deleat(list *L,int a)
{
int i;
for(i=a-1;i<=L->last-1;i++)
L->data[a-1]=L->data[a];
printf("\n删除第%d个元素后表的输出为\n",a);
printlist(L);
}
//
int panduan(list *L)
{
if(L->last==0)
printf("\n表为空\n");
else
printf("\n表不为空\n");
return 0;
}
int get(list *L,int a)
{
if(L->last>=a)
printf("第%d个元素是%c",a,L->data[a-1]);
else
printf("第三个元素不存在\n");
return 0;
}
int Get(list *L,char n)
{
int i;
for(i=0;i<L->last;i++)
if(L->data[i]==n)
printf("\n%c元素的位置是第%d个元素",n,i+1);
return 0;
}
main(void)
{
list *L;
datatype ch;
creatlist(L);/*创建链表并插入元素*/
panduan(L);//判断表是否为空
get(L,3);//查找第三个元素
Get(L,'a');//查找a元素的位置
inseret(L,4,'f');//在第四个位置上插入f
deleat(L, 3);//删除第三个元素
printf("\n"); /*插入元素并排列*/
}
#include <stdio.h>
#include<stdlib.h>
typedef char datatype;
typedef struct zimu
{datatype data;
struct zimu *next;
}list;
//
int getlist(list *head,int j)
{
list *p;
int i=1;
for(p=head->next;p!=NULL;)
{if(j==i)
{
printf("\n第三个结点是 %c",p->data);
break;
}
p=p->next;
i++;
}
}
//
int Getlist(list *head,char key)
{
list *p;
int i=1;
p=head->next;
for(;p!=NULL;)
{if(p->data!=key)
{
p=p->next;
i++;
}
else break;
}
printf("\n%c元素所在的结点数是%d",key,i);
}
//
int insertlist(list *head,int i,char key)
{
list *p,*s;int j=1;
p=head->next;
for(;p!=NULL;)
{
p=p->next;
j++;
if(i-1==j)break;
}
s=(list *)malloc(sizeof(list));
s->data=key;
s->next=p->next;
p->next=s;
p=head->next;
printf("\n插入 %c 结点后链表输出为\n",key);
for(;p!=NULL;)
{
printf("%c",p->data);
p=p->next;
}
}
//
void deleatlist(list *head, int i)
{
list *p,*r;
int j;
p=head;
for(j=1;j!=i;j++)
p=p->next;
r=p->next;
p->next=r->next;
free(r);
printf("\n删除第三个结点后链表的输出为\n");
for(p=head->next;p!=NULL;)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
//
int freelist(list *head)
{
list *p;
while(head!=NULL)
{
p=head;
head=head->next;
free(p);
}
}
//
void panduan(list *head)
{
list *p;
p=head->next;
if(p==NULL)printf("链表为空");
else printf("链表不为空");
}
//
list *creatlist()
{
list *p,*r,*head;
datatype ch;
int size=0;
head=(list *)malloc(sizeof(list));//分配头结点
head->next=NULL;
r=head;
printf("输入A,B,C,D,E\n");
ch=getchar(); //插入结点
while(ch!='\n')
{
p=(list *)malloc(sizeof(list));
(*p).data=ch;
(*r).next=p;
r=p;
ch=getchar();
size++;
}
(*r).next=NULL;
printf("链表建立后的输出为\n");//输出链表
for(p=head->next;p!=NULL;)
{
printf("%c",p->data);
p=p->next;
}
printf("当前链表的结点个数是%d\n",size);//链表的个数
return head;
}
//
main(void)
{
list *head;
head=creatlist();//建立单链表
panduan(head);//判断链表是否为空
getlist(head,3);//查找打三个结点
Getlist(head,'A');//输出A元素的位置
insertlist(head,4,'F');//在第四个结点位置上插入F (后插法)
deleatlist(head,3) ;//删除第三个元素
freelist(head);//释放链表
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询