#include<stdio.h>
#include<stdlib.h>
#define ListSize 100
typedef int DataType;
typedef struct{
DataType *data;
int length;
int size;
} Sqlist;
void initSqlist(Sqlist *L)
{
L->data = (void*)malloc(ListSize * sizeof(int));
if(! L->data) exit(0);
L->length = 0;
L->size = ListSize;
}
/*在顺序表的i位置插入元素*/
void insertSqlist(Sqlist *L,int i,DataType e){
int j;
DataType *base;
if(i<1 || i>L->length+1) exit(0);
if(L->length >= L->size)
{
base = (void *) realloc(L->data,(L->length+10)*sizeof(int));
if(! base) exit(0);
L->data = base;
L->size = L->length +10;
}
for(j = L->length-1;j>= i-1;j--)
{
L->data[j+1] = L->data[j];
}
L->data[i-1] = e;
L->length ++;
}
/*从顺序表中删除元素*/
void delSqlist(Sqlist *L,int i)
{
/*位置是否合法*/
int j;
if(i<1 || i>L->length +1) exit(0);
for(j = i;j < L->length;j++)
xx{
L->data[j-1] = L->data[j];
}
L->length --;
}
int main()
{
Sqlist L;
int i;
initSqlist(&L);
for(i = 0;i < 15;i++)
{
insertSqlist(&L,i+1,i+1);
}
for(i = 0;i<15;i++)
printf("%d ",L.data[i]);
putchar(10);
''
delSqlist(&L,5);
for(i = 0;i<15;i++)
printf("%d ",L.data[i]);
putchar(10);
system("pause");
return 0;
}
上面代码实现了顺序表的创建。
/*创建一个链表,头结点插入法*/ #include<stdio.h> #include<stdlib.h> typedef char DataType; typedef struct ndoe{ DataType data; struct node *next; }ListNode; typedef ListNode *LinkList; /*头插入法 *重复读入新的数据,生成新的节点,然后将该节点插入到头部 *知道数据结束 *并返回头结点 *头结点中也存有元素 *这样读取的数据和读入的数据顺序是相反的 */ LinkList createLinkList() { char ch; ListNode *temp; LinkList head; head = NULL; printf("输入各个节点的数据:\n"); while((ch = getchar()) != '\n') { temp = (ListNode *)malloc(sizeof(ListNode)); if(!temp)exit(0); temp->data = ch; temp->next = head; head = temp; } return head; } /* * 在链表的尾部插入数据*/ void insertLinkList(LinkList head,DataType item) { LinkList p,temp = head; while(temp->next != NULL ) temp = temp->next; p = (LinkList)malloc(sizeof (ListNode)); if(!p) exit(0); p->data = item; p->next = NULL; temp->next = p; //return head; } /**释放链表的各个节点 *头结点的释放尤其重要 **/ void destroyLinkList(LinkList head) { LinkList p; p = head; while(head) { p = head->next; free(head); head = p; } } /*在链表中查找元素是不是存在*/ int searchLinkList(LinkList head,DataType item) { LinkList p = head; while(p) { if(p->data == item) return 1; p = p->next; } return 0; } int main(vodi) { char ch; int status; LinkList p, head = createLinkList(); for(p = head;p!= NULL;p = p->next) printf("%c",p->data); putchar(10); /*插入新的元素*/ puts("输入你要插入的新元素:"); ch = getchar(); //getchar(); insertLinkList(head,ch); for(p = head;p != NULL;p = p->next) printf("%c ",p->data); putchar(10); /*查找元素*/ printf("输入要查找的元素:"); ch = getchar(); getchar(); status =searchLinkList(head,ch); switch(status){ case 1: printf("Find it.\n");break; case 0: printf("Not find it.\n"); } destroyLinkList(head); return 0; }