字符数组的冒泡排序+ 动态顺序存储线性表的基本实现
/*
void Sort(LinkList L)
{
LNode *q,*p,*c;
p=L->next;
q=L;
char cnt;
while(p!=NULL)
{
while(p->next!=NULL)
{
if(p->data > p->next->data)
{
cnt=p->data;
p->data=p->next->data;
p->next->data=cnt;
}
p=p->next;
}
p=q->next;
q=p;
}
for(c=L->next;c;c=c->next)
{
printf("%c\n",c->data);
}
}
*/
/* 例题
2_2 动态顺序存储线性表的基本实现
任务描述:
根据给出的存储结构,完成现在下列函数功能,并按照主函数的代码,输出规定的效果。
预定义常量和类型:
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define Status int
#define OVERFLOW -1
#define OK 1
#define ERROR 0
#define ElemType int
存储结构:
typedef struct
{
ElemType * elem;
int length;
int listsize;
}SqList;
函数操作:
打印:voidListPrint_Sq(SqListL)
分类:void PartList(SqList *La)
注意:
输出打印(ListPrint_Sq)是指将表中数据元素打印出来;
分类(PartList)是在线性表L中将正数和负数分开,正数在前,负数在后,0在中间,正数的相对位置保持不变,负数的相对位置也保持不变。
主函数如下:
int main(void)
{
SqList L;
int i=0;
ElemType e;
ElemType data[9] = {10,263,-32,-3,-25,88,77,0,-9};
InitList_Sq(&L);
for(i = 0;i < 9; i++)
ListInsert_Sq(&L,i+1,data[i]);
printf("插入完成后 L = : ");
ListPrint_Sq(L);
PartList(&L);
printf("元素分类后的线性表:");
ListPrint_Sq(L);
system("pause");
return 0;
}
*/
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef char ElemType;
typedef struct Node
{
ElemType data;
struct Node * next;
}LNode,*LinkList;
Status Init(LinkList *L)
{
LNode *newNode=(LNode *)malloc(sizeof(LNode));
newNode->next=NULL;
L=newNode;
return L;
}
void ListInsert(LinkList L)
{
char str[]={'s','o','f','t','w','a','r','e'};
//L->next=newNode;
LNode* tail=L;
int i;
for(i=0;str[i]!=NULL;i++)
{
LNode *Lnew=(LNode *)malloc(sizeof(LNode));
Lnew->data=str[i];
Lnew->next=NULL;
tail->next=Lnew;
tail=Lnew;
}
}
void Sort(LinkList L)
{
LNode *q,*p,*c;
p=L->next;
q=L;
char cnt;
while(p!=NULL)
{
while(p->next!=NULL)
{
if(p->data > p->next->data)
{
cnt=p->data;
p->data=p->next->data;
p->next->data=cnt;
}
p=p->next;
}
p=q->next;
q=p;
}
for(c=L->next;c;c=c->next)
{
printf("%c\n",c->data);
}
}
int main(void)
{
LinkList L1;
Init(&L1);
ListInsert(L1);
//OutPut(L1);
Sort(L1);
//system("pause");
return 0;
}