当前位置:文档之家› 数据结构实验报告

数据结构实验报告

1 掌握栈的顺序表示和实现。 1.2 掌握队列的链式表示和实现。 2. 实验内容 2.1 编写一个程序实现顺序栈的各种基本运算。 2.2 实现队列的链式表示和实现。 3. 实验步骤 1. 初始化顺序栈 2. 插入元素 3. 删除栈顶元素 4. 取栈顶元素 5. 遍历顺序栈 6. 置空顺序栈 7. 初始化并建立链队列 8. 入链队列 9. 出链队列 10. 遍历链队列 4. 实验实现 4.1 队列实现 #include<stdio.h> #include<conio.h> #include<stdlib.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int QElemType; typedef struct QNode{ QElemType data;
n = getchar(); v.elem[i] = n; i++; }while(i <= st);
} BOOL insert(sqlist &v, int loc, char ch){ int i; if ((loc < 1) || (loc > st+1)){ printf("插入位置不合理!\n"); return False; } else if (st >= MAX){ printf("线性表已满!\n"); return False; } else { for (i = st; i >= loc; i--) v.elem[i+1] = v.elem[i]; v.elem[loc] = ch; st += 1 ; return True; } } BOOL del(sqlist &v, int loc, char &ch){ int j; if (loc <1 || loc>st) return False; else{ ch = v.elem[loc ]; for (j = loc ; j < st ; j++) v.elem[j] = v.elem[j + 1]; st--;
break; } case '3':{ printf("请输入要删除元素的位置:"); scanf("%d", &loc); temp = del(S, loc, ch); if (temp == True) printf("删除了一个元素:%c\n", ch); else printf("该元素不存在!\n"); print(S); break; } case '4':{ printf("请输入要查找的元素:"); getchar() ; ch = getchar() ; loc = locate(S, ch); if (loc != -1) printf("该元素所在位置:%d\n", loc + 1); else printf("%c 不存在!\n", ch); break; } default:flag = 0; printf("程序结束,按任意键退出!\n"); } } getch(); } void initial(sqlist &v){ int i = 0; char n; printf("请输入顺序线性表的长度 : n = "); scanf("%d", &st); printf("请输入从1到%d各元素(字符),例如:abcdefg\n", st); do{
} while (a != '\n'); head = head->next; p->next = NULL; return(head); } void display(Node *head){ Node *p; p = head; if (p != NULL){ do{ printf("%d ", p->number); p = p->next; } while (p != NULL); } } Node* addfirst(Node *head){ Node *p; p = (Node*)malloc(sizeof(Node)); scanf("%d", &p->number); p->next = head; head = p; return(head); } void insert(Node* head, int n){ Node *p, *s; p = head; if (n == 0) addfirst(p); else{ for (int i = 0; i < n - 1; i++){ p = p->next; } } s = (Node *)malloc(sizeof(Node)); printf("请输入插入数据:"); scanf("%d", &s->number); s->next = p->next;
p->next = s; } Node* deletefirst(Node *head){ Node *p; p = head; head = head->next; free(p); return(head); } void deletenum(Node *head,int m){ Node *p ,*q ; p = head ; for(int i = 0 ; i < m ; i++){ q=p; p = p->next ; } q->next = p->next ; free(p) ; } 5. 实验结果
void deletenum(Node * , int m) ; void main(){ Node *head; int n , m; head = (Node*)malloc(sizeof(Node)); printf("author : 王均坐\n"); printf("id 201413060213\n"); printf("date 2015/11/19\n\n"); printf("请输入初始链表数据: "); head = creat(); display(head); printf("\n输入插入首部数据:"); head = addfirst(head); display(head); printf("\n请输入插入的位置:"); scanf("%d", &n); insert(head, n); display(head); printf("\n删除首部数据"); head = deletefirst(head); display(head); printf("\n请输入要删除的数据位置"); scanf("%d",&m); deletenum(head,m); display(head) ; } Node *creat(){ Node *head, *p, *s; char a; head = (Node*)malloc(sizeof(Node)); p = head; do{ s = (Node*)malloc(sizeof(Node)); scanf("%d", &s->number); p->next = s; p = s; a = getchar();
return True; } } int locate(sqlist v, char ch){ int i = 0; while (i < st && v.elem[i] != ch) i++; if (v.elem[i] == ch) return i-1; else return(-1); } void print(sqlist v){ int i = 0; char n ; do{ n = v.elem[i] ; printf("%c",n) ; i++; }while(i <= st); printf("\n"); 4.2 链式线性表实现 //author 王均坐 //id 201413060213 //date 2015/11/19 #include <stdio.h> #include<stdlib.h> typedef struct numbers{ int number; struct numbers *next; }Node; Node *creat(); Node* addfirst(Node *); void insert(Node *, int n); Node* deletefirst(Node *); void display(Node *);
实验一 线性表及其应用
1. 实验目的 1.1 熟悉C语言的上机环境,进一步掌握C语言的结构特点。 1.2 掌握线性表的顺序储存结构的定义及C语言的实现。 1.3 掌握线性表的链式存储结构——单链表的定义及C语言实现。 1.4 掌握线性表在顺序存储结构即顺序表中的各种基本操作。 1.5 掌握线性表在链式存储结构——单链表中的各种基本操作。 2. 实验内容 2.1 顺序线性表的建立、插入及删除。 2.2 链式线性表的建立、插入及删除。 3. 实验步骤 3.1 建立含n个数据元素的顺序表并输出该表中各元素的值及顺序 表的长度。 3.2 利用前面的实验先建立一个顺序表L={21,23,14,5,56, 17,31},然后在第i个位置插入元素68。 3.3 建立一个带头节点的单链表,节点的值域为整形结构。要求将 用户的输入数据按尾插入法建立相应的单链表。 4. 实验实现 4.1 顺序表实现 //author 王均坐 //id 201413060213 //date 2015/11/26 #include<stdio.h> #include<conio.h> #define MAX 30 enum BOOL { False, True }; typedef struct{ char elem[30]; int last; }sqlist; void initial(sqlist &); BOOL insert(sqlist &, int, char); BOOL del(sqlist &, int, char &); int locate(sqlist, char); void print(sqlist);
相关主题