数据结构编程求救

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构编程求救相关的知识,希望对你有一定的参考价值。

实验一 线性表运算
一、实验目的
1、掌握线性表的结构特点。
2、掌握线性表的基本操作:初始化,插入,删除,查找,判空,求线性表长度等运算在顺序存储结构和链式存储结构上的实现。
3、通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的应用)。

二、实验要求
1、选择何时的存储方式实现线性表。其中,必须实现的线性表基本操作为:InitList、 ClearList、ListEmpty、ListLength、GetElem、PriorElem、ListInsert、ListDelete这8个基本操作,其余的可以选作。
2、所写源代码编程风格良好,有详细注释。
3、程序运行界面良好,使用菜单实现每个基本操作。
4、实验报告书写规范。

实验二 双向栈实现
一、实验目的
1、会定义顺序栈和链栈的结点类型。
2、掌握双向栈的结构特点及其在一维数组中的实现。
3、掌握在双向栈中进行插入和删除元素的方法。

二、实验要求
1、定义栈的存储结构。
2、编写程序实现双向栈的基本操作:1)初始化;2)判断栈是否为空;3)判断栈是否已满;4)入栈;5)出栈;6)清空栈;7)取栈顶元素。
3、所写源代码编程风格良好,有详细注释。
4、程序运行界面良好,使用菜单实现每个基本操作。

实验三 表达式求值
一、实验目的
1、掌握栈的特性,能利用栈的特性进行实际应用。
2、掌握“运算符优先法”,并能利用该算法对表达式求值。

二、实验要求
1、求一个表达式的值:输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法表达式,计算该表达方式的运算结果。
2、有能力的同学可以考虑操作数为负数的情况(如何分辨“-”为负号还是减法运算符)。
3、所写源代码编程风格良好,有详细注释。
4、程序运行界面良好。

实验四 串运算
一、实验目的
掌握串的基本处理操作和几种不同的存储结构(定长顺序存储表示、堆分配存储表示和块链存储表示)。

二、实验要求
1、实现串赋值、串比较、求串长、串联接以及求子串这5种基本操作。
2、能利用上述实现的基本操作完成置换Replace (&S, T, V)以及从串中删除一段子串StrDelete(&S,pos,len)的操作。
3、以上要求实现的操作不能直接使用C语言提供的函数(gets(),puts()除外)完成。
4、所写源代码编程风格良好,有详细注释。
5、程序运行界面良好,使用菜单实现每个基本操作。

试验一:

#include<iostream>
#include<string>
using namespace std;

struct List

int num;
List *next;
;

List *head=NULL;

List* CreateList()

List *pL;
List *pEnd;

pL=new List;
head=pL;
pEnd=pL;
cout<<"请输入节点的数目,以 0 结束"<<endl;
cin>>pL->num;
while(pL->num!=0)

pEnd->next=pL;
pEnd=pL;
pL=new List;
cin>>pL->num;


delete pL;
pEnd->next=NULL;
return head;

void ShowList(List *head)

cout<<endl;
cout<<"链表节点如下:"<<endl;
while(head)

cout<<head->num<<endl;
head=head->next;


void InsertList(List *head,int num)


List *list =new List;
List *l;
while(head)

l=head;
head=head->next;

list->num=num;
list->next=NULL;
l->next=list;



void DeleteList(List *head, int num)


List *l;
if(head->num==num)

l=head;
head=head->next;
::head=head;
delete l;
return ;


List *l1=head;
while(head)

if(head->next==NULL)
cout<<"找不到不要删除的数字."<<endl;
return ;


if(head->next->num==num)

l=head->next;
head->next=l->next;
delete l;
::head=l1;
cout<<"操作成功"<<endl;
return ;

head=head->next;


cout<<"找不到不要删除的数字."<<endl;


int GetListNum(List *head)

int num=0;
while(head)

num++;
head=head->next;


return num;


int main()

string str;

begin:
cout<<"1->增加链表 2->显示链表 3->插入节点 4->删除节点 5->节点数目"<<endl;
cin>>str;
if(str[0]==\'1\')

CreateList();

else if(str[0]==\'2\')

if(head==NULL)

cout<<"你的链表现在是空的,请增加链表"<<endl;
getchar();
getchar();
system("cls");
goto begin;

ShowList(head);

else if(str[0]==\'3\')

if(head==NULL)

cout<<"你的链表现在是空的,请增加链表"<<endl;
getchar();
getchar();
system("cls");
goto begin;

int num;
cout<<"请输入要插入的数字:"<<endl;
cin>>num;
InsertList(head,num);

else if(str[0]==\'4\')

if(head==NULL)

cout<<"你的链表现在是空的,请增加链表"<<endl;
getchar();
getchar();
system("cls");
goto begin;

int num;
cout<<"请输入要删除的数字:"<<endl;
cin>>num;
DeleteList(head,num);

else if(str[0]==\'5\')

cout<<"节点数是:"<<GetListNum(head)<<endl;

else

cout<<"输入错误,请重新输入.";

if(str[0]!=\'Q\' && str[0]!=\'q\')

cout<<endl<<endl;
getchar();
getchar();
system("cls");

goto begin;




试验二:
#include<iostream>
#include<string>
using namespace std;

struct Stack
char c;
Stack *pNext;
;

void InitStack(Stack *&s)

s=NULL;

char Peek(Stack *s)

if(s==NULL)
cout<<"栈是空的."<<endl;
return -1;

return s->c;

void Push(Stack *&s,Stack *newS)

newS->pNext=s;
s=newS;

char Pop(Stack *&s)

if(s==NULL)

cout<<"栈是空的."<<endl;
return -1;

Stack *pNext;
char c;
if(s)

pNext=s->pNext;
c=s->c;
delete s;
s=pNext;
return c;


int main()


Stack *s;
Stack *s1;
InitStack(s);
long num;
int m;
int k;
char c;
cout<<"输入一个数:"<<endl;
cin>>num;
cout<<"输入要转换的进制:"<<endl;
cin>>k;
while(num!=0)

m=num%k;
c=(int(\'0\')+m);
s1=new Stack;
s1->c=c;
Push(s,s1);
num/=k;

while(s)

cout<<Pop(s);

cout<<endl;
参考技术A 临近期末,要作业答案的越来越多了.

以上是关于数据结构编程求救的主要内容,如果未能解决你的问题,请参考以下文章

关于学生信息管理的C语言编程问题求救(一定要是C语言编程,谢谢)

求救C语言高手!!

求救C++编程实现findmax函数

VS2013编程C++ 调试和生成老是出现问题,求救~~~

高手啊 求救求救啊帮我用c语言编写个先进先出的算法 急需啊

在Linux系统系下vi操作中C语言编程,如何进行复制粘贴?求救!