(队列)数组操作:
两个变量:head与tail,head指向队首,tail指向队尾最后一个位置。
在队首删除一个数是head++,在队尾加一个数是q[tail]=x;tail++;
简单队列:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| int main() { int q[101]={0,6,3,1,7,5,8,9,2,4},head,tail; int i; head = 1; tail = 10; while(head<tail) { //打印队首并将队首出列 printf("%d",q[head]); head++; q[tail]=q[head]; tail++; //再将队首出列 head++; } return 0; }
|
队列将是我们今后学习广度优先搜索以及队列优化的 Bellman-Ford 最短路算法的核心 数据结构。所以现在将队列的三个基本元素(一个数组,两个变量)封装为一个结构体类型, 如下。
1 2 3 4 5 6
| struct queue { int data[100];//队列的主体,用来存储内容 int head;//队首 int tail;//队尾 };
|
回文字符串 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| int main() { char a[101],s[101]; int i,len,mid,next,top; gets(a); len = strlen(a); mid = len/2-1; top = 0;//栈的初始化 for(i=0;i<=mid;i++)//将mid前的字符依次入栈 s[++top]=a[i]; //判断字符串的长度是奇数还是偶数,并找出需要进行字符匹配的起始下标 if (len%2==0) { next = mid+1; }else next=mid+2; for(i=next;i<=len-1;i++) { if(a[i]!=s[top]) break; top--; } if (top==0) printf("yes"); else printf("no"); return 0; }
|
链表
动态存储:
malloc(4);
malloc函数的作用就是从内存中申请分配指定字节大小的内存空间。上面这行代码就申 请了 4 个字节。