数据结构实验2:线性表子系统(共7页).doc
精选优质文档-倾情为你奉上验证性实验2:线性表子系统班级学号 20 姓名 施程程 1实验目的(1)掌握线性表的特点。(2)掌握线性表顺序存储结构和链式存储结构的基本运算。(3)掌握线性表的创建、插入、删除和显示线性表中元素等基本操作。2实验内容(1)用结构体描述一个字符形的单向链表。(2)创建线性表;在线性表中插入元素、删除元素;显示线性表中所有元素等基本操作。(3)用if语句设计一个选择式菜单。 线 性 表 子 系 统* 1-建 表 * 2-插 入 * 3-删 除 * 4-显 示 * 5-查 找 * 6-求 表 长 * 0-返 回 *请选择菜单号(0-6):3实验程序#include<stdio.h>typedef struct linknode char data; struct linknode *next;linnode;linnode *head;int n;void CreateList() n=0; linnode *p,*s; char x; int z=1; head=new linnode; p=head; printf("ntt请逐个输入结点,以“x”为结束标记!n"); printf("n"); while(z) printf("tt输入一个字符数据,并按回车:"); scanf("%c",&x);getchar();if(x!='x')s=new linnode;n+;s->data=x;p->next=s;s->next=NULL;p=s;else z=0; void InsList(int i,char x) linnode *s,*p; p=head; int j=0; while(p!=NULL&&j<i) j+; p=p->next; if(p!=NULL) s=new linnode; s->data=x;s->next=p->next;p->next=s;n+; else printf("ntt线行表为空或插入位置超出!n");void DelList(char x) linnode *p,*q; if(head=NULL) printf("ntt链表下溢!"); return; if(head->next=NULL) printf("ntt线性表已经为空!"); return; q=head; p=head->next; while(p!=NULL&&p->data!=x) q=p; p=p->next; if(p!=NULL) q->next=p->next; delete p;n-;printf("ntt结点%c已经被删除!",x); else printf("ntt抱歉!没有找到您要删除的结点.");void ShowList() linnode *p=head; printf("ntt显示线性表的所有元素:"); if(head->next=NULL|p=NULL) printf("ntt链表为空!"); else printf("ntt"); while(p->next!=NULL) printf("%5c",p->next->data); p=p->next; void SearchList(char x) linnode *p; int i=1; if(head=NULL) printf("ntt链表下溢!"); return; if(head->next=NULL) printf("ntt线性表为空,没有任何结点!"); return; if(p!=NULL) printf("ntt在表的第%d位上找到值为%c的结点!",i,x); else printf("ntt抱歉,未找到值为%c的结点!",x);void main() head=NULL; int choice,i,j=1; char x; while(j) printf("n"); printf("ntt 线性表子系统 ");printf("ntt*");printf("ntt* 1-建 表 *");printf("ntt* 2-插 入 *");printf("ntt* 3-删 除 *");printf("ntt* 4-显 示 *");printf("ntt* 5-查 找 *");printf("ntt* 6-求 表 长 *");printf("ntt* 0-返 回 *");printf("ntt*");printf("ntt 请选择菜单号(0-6):");scanf("%d",&choice);getchar();if(choice=1)CreateList();elseif(choice=2) printf("ntt请输入插入的位置i和插入的数据(输入格式:i,x):"); scanf("%d,%c",&i,&x); InsList(i,x);elseif(choice=3) printf("ntt请输入要删除的数值:"); scanf("%c",&x); DelList(x);elseif(choice=4)if(head=NULL)printf("ntt请先建立线性表!");elseShowList();elseif(choice=5) printf("ntt请输入要查找的元素:"); scanf("%c",&x); SearchList(x);elseif(choice=6)printf("ntt线性表长度为:%d ",n);elseif(choice=0)j=0;elseprintf("ntt输入错误!请重新输入!"); 4 程序运行5 小结本章主要要求我们掌握的是线性表的特点,也就是顺序存储结构和链式存储结构中的创建、插入、删除、显示、查找等基本操作。这个实验我们是用结构体描述一个字符型的单向链表,也就是线性表的应用。如果要我自己编程序的话我事肯定不行的,还好书上给了我们参考的程序,我看的话是能看的懂的。我在输入好程序,编译的时候有4个错误,是我输入的时候打错单词还有就是漏了分号,还好上机操作可以检查出错误,这也提醒了我那些是容易出错的,我以后会注意的,争取不犯同样的错误。总的来说,实验还是比较成功的,我能很好的从结果中看到线性表的应用。专心-专注-专业