数据结构(C语言版)-实验报告
#include<>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_IN NULL 0
#define OK 1
#define ERROR 0
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
int InitList_L(LinkList &L){
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return OK;
}
int ListInsert_L(LinkList &L,int i,int e){
LinkList p,s;
int j;
p=L;j=0;
while(p&&j<i-1){
p=p->next;++j;
}
if(!p||j>i-1)
return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
int ListDelete_L(LinkList&L,int i,int &e){
LinkList p,q;
int j;
p=L;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j<i-1)
return ERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
return OK;
}
int main(){
LinkList L,p;
char a[8]={'A','C','E','F','H','J','Q','U'};
int i,j;
InitList_L(L);
for(i=1,j=0;i<=8,j<8;i++,j++)
ListInsert_L(L,i,a[j]);
p=L->next;
while(p!=NULL){
printf("%c\t",p->data);
p=p->next;
}//插入八个字符
printf("\n");
i=2;
int e;
ListInsert_L(L,i,'B');
p=L->next;
while(p!=NULL){
printf("%c\t",p->data);
p=p->next;
}//插入一个字符
printf("\n");
i=3;
ListDelete_L(L,i,e);
p=L->next;
while(p!=NULL){
printf("%c\t",p->data);
p=p->next;
}
printf("\n");
return 0;
}
实验结果:
A C E F H J Q U
A B C E F H J Q U
A B E F H J Q U
心得体会:
单链表是通过扫描指针P进行单链表的操作;头指针唯一标识点链表的存在;插入和删除元素快捷,方便。
实验3
实验题目:栈操作设计和实现
实验目的:
1、掌握栈的顺序存储结构和链式存储结构,以便在实际中灵活应用。
2、掌握栈的特点,即后进先出和先进先出的原则。
3、掌握栈的基本运算,如:入栈与出栈等运算在顺序存储结构和链式存储结构上的实现。
实验要求:
回文判断:对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。
实验主要步骤
(1)数据从键盘读入;
(2)输出要判断的字符串;
(3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。
程序代码:
#include<>
#include<>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define N 100
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
数据结构(C语言版)-实验报告 来自淘豆网www.taodocs.com转载请标明出处.