数据结构(二)

原创 2015年11月20日 19:27:44
1.顺序表和链表综合
//在递增有序的顺序表中编程实现A=A-B∩C

typedef  int ElemType;
#include "sqlist.h"//即为数据结构(一)顺序表部分
#include<stdlib.h>
int main()
{
	SqList mylist1,mylist2,mylist3;
	/*��ʼ��˳����L*/
	initlist(mylist1);
	initlist(mylist2);
	initlist(mylist3);
	/*����˳����L*/
	mycreat(mylist1);
	mycreat(mylist2);
	mycreat(mylist3);
	int i = 0, j = 0, k = 0;
	for (i = 0;i < mylist1.length;i++)
	{
		int m = mylist1.elem[i];
		for (j = 0;j < mylist2.length;j++)
		{
			int n = mylist2.elem[j];
			if (m == n)
			{
				for (k = 0;k < mylist3.length;k++)
				{
					int t = mylist3.elem[k];
					if (t == n)
					{
						mylistdelete(mylist1, i);
						i--;
					}
					else
						continue;
				}
			}
			else
				continue;
		}
	}
	output(mylist1);
	system("pause");
	return 0;
}
//////////////////////////////////////////////////////////////////////////////////////
编程实现在有序的单链表结构中删除表中所有值大于mink且小于maxk的元素(mink<=maxk) 

#include<stdio.h>
#include"linklist.h"//即为数据结构(一)的链表部分
#include<stdlib.h>

void main()
{
	Linklist myLinklist,p, t;
	initlist(myLinklist);
	creat(myLinklist);
	p=t = myLinklist;
	myLinklist = t->next;
	int maxk = 10, mink = 1;
	while (myLinklist!= NULL)
	{
		if (myLinklist->data > maxk)
			return;
		if (myLinklist->data <= mink)
		{
			t = myLinklist;
			myLinklist = myLinklist->next;
		}
		else
		{
			t->next = myLinklist->next;
			myLinklist = t->next;
		}
	}
	output(p);
	system("pause");
}

2.栈

应用栈实现判定一个字符串中括号是否匹配(包括()、[ ]、{ })
/*
typedef Bitree SElemType;
typedef struct
{SElemType *base,*top;
 int stacksize;
}Sqstack;

//初始化栈
void Initstack(Sqstack &s)
{   if((s.base=(SElemType *)malloc(100*sizeof(SElemType)))==NULL)
	{    printf(" no size");
             exit(0);
	}
	else {s.top=s.base;
	      s.stacksize=100;
		  }
}

//取出栈顶元素
SElemType Gettop(Sqstack s)
{ SElemType e;
  e=*(s.top-1);
  return e;
}

//删除栈顶元素,并用e返回
Status Pop(Sqstack &s,SElemType &e)
{ if(s.top==s.base)  return ERROR;
  s.top--;
  e=*s.top;
  return OK;
}

//将元素e压入栈中
Status Push(Sqstack &s,SElemType e)
{ if(s.top-s.base==s.stacksize)  return ERROR;
  *s.top=e;
  s.top++;
  return OK;
}

//判断栈是否为空
int Emptystack(Sqstack s)
{if(s.top==s.base)
   return 1;
 else return 0;
}*/

typedef char SElemType;
#include "confere.h"
#include "sqstack.h"//即为上文中/* */内部分
#include<string.h>
#define N 25
Status judge(char ch1, char ch2)
{
	if (ch1 == '['&&ch2 == ']' || ch1 == '(' && ch2 == ')' || ch1 == '{'&&ch2 == '}')
		return OK;
	else
		return FALSE;
}
void mychange2(Sqstack &S, char t)
{
	char c=0;
	if(!Emptystack(S))
	{
		 if (judge(Gettop(S), t))
		 {
			 Pop(S, c);
		 }
		 else
			 Push(S, t);
		return;
	}
	Push(S, t);
}
void main()
{
	Sqstack sq;
	sq.base=(SElemType*)malloc(sizeof(SElemType)*100);
	sq.top=sq.base;
	sq.stacksize=100;
	char buff[N] = { 0 };
	gets(buff);
	int n = strlen(buff);
	for (int i = 0;i <n;i++)
	{
		mychange2(sq, buff[i]);
	}
	char e = 0;
	while (!Emptystack(sq))
	{
		Pop(sq, e);
		putchar(e);
	}
}




注:上述代码作者自己书写,难免会有错误不足之处,欢迎读者指出,大家共同学习大笑




版权声明:本文为博主原创文章,未经博主允许不得转载。

二叉树C++实现数据结构实验

二叉树结构的C++实现,递归和非递归遍历方法, 1. 按先序序列构造一棵二叉链表表示的二叉树T; 2. 对这棵二叉树进行遍历:先序、中序、后序以及层次遍历,分别输出结点的遍历序列; 3. 求二叉树的深...
  • zhembrace
  • zhembrace
  • 2016年10月30日 20:50
  • 2644

数据结构学习之二叉树(理论篇)

注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。转载请注明来自: http://blog.csdn.net/ab198604         一、什么是树?         ...
  • ab198604
  • ab198604
  • 2013年01月16日 08:51
  • 18801

【数据结构】二叉树的原理及实现学习总结

二叉树概述数组、向量、链表都是一种顺序容器,它们提供了按位置访问数据的手段。而很多情况下,我们需要按数据的值来访问元素,而不是它们的位置来访问元素,二叉树在很大程度上解决了这个问题,二叉树是按值来保存...
  • jianyuerensheng
  • jianyuerensheng
  • 2016年04月25日 09:46
  • 5050

云南大学软件学院数据结构实验二-geek东楼

  • 2015年01月08日 18:35
  • 82KB
  • 下载

数据结构实验4-单链表(二)

  • 2013年12月04日 19:53
  • 19KB
  • 下载

数据结构6.4图的存储之二邻接表

  • 2014年11月30日 18:34
  • 433KB
  • 下载

严蔚敏数据结构(最全资料之二)

  • 2009年05月25日 13:19
  • 7.21MB
  • 下载

数据结构实验二-栈的转换

  • 2016年06月21日 20:04
  • 23KB
  • 下载

大二数据结构作业--大整数

  • 2017年11月15日 16:50
  • 41.04MB
  • 下载

数据结构实验二线性表子系统

  • 2014年11月04日 16:38
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构(二)
举报原因:
原因补充:

(最多只允许输入30个字)