单链表基本操作目录:
1.创建头结点
2.链表元素查找
3.插入节点
4.删除节点
5.头插法
6.尾插法
7.排序(起泡法排序)
8.打印链表
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
int Node;
struct node *next;
}Linklist;
Linklist *create() // 1,Creat Head node:No data,No serial number.
{
Linklist *head;
head=(Linklist *)malloc(sizeof(Linklist));
head->Node=0;
head->next=NULL;
return head;
}
Linklist *seek(Linklist *head,int value) // 2.Seek:seek for the "value".
{
Linklist *p;
p=head->next;
while((p->data!=value)&&(p->next!=NULL))
{
p=p->next;
}
if(p->next==NULL)
{
printf("Not found!");
return;
}
return p;
}
Linklist *insert_node(Linklist *head,int insertElem,int elem) // 3.Insert:insert the "insertElem" after the "elem".
{
Linklist *p,*t;
p=head->next;
while((p->data!=elem)&&(p->next!=NULL))
{
p=p->next;
}
if(p->next==NULL)
{
printf("Data error!");
return;
}
t=(Linklist *)malloc(sizeof(Linklist));
t->data=insertElem;
t->next=p->next;
p->next=t;
return head;
}
Linklist *del_node(Linklist *head,int value) // 4.Delete:delete "value".
{
Linklist *p,*t;
p=head; //Warming: "p=head->next" in here is wrong!
while(p->next!=NULL)
{
if(p->next->data==value)
{
t=p->next;
p->next=p->next->next; // "p->next=t->next" in here is also correct.
free(t);
}
else p=p->next;
}
return head;
}
Linklist *head_insert(Linklist *head,int value) // 5.Head Insert.
{
Linklist *p,*t;
t=head;
p=(Linklist *)malloc(sizeof(Linklist));
p->data=value;
p->next=t->next;
t->next=p;
return head;
}
Linklist *tail_insert(Linklist *head,int value) // 6.Tail Insert.
{
Linklist *p,*t;
t=head;
p=(Linklist *)malloc(sizeof(Linklist));
p->data=value;
while(t->next!=NULL) //Move the Pointer "t" to the end of the list.
{
t=t->next;
}
t->next=p;
p->next=NULL;
return head;
}
Linklist *sort(Linklist *head) // 7.Sort:Bubble sorting.
{
Linklist *p,*t;
int i,j,temp;
int n=0;
p=head->next;
while(p!=NULL) //Calculating the number of nodes in Linklist.
{
n++;
p=p->next;
}
for(i=1;i<n;i++) //Bubble sorting
{
p=head->next;
t=p->next;
for(j=0;j<n-i;j++)
{
if(p->data>t->data)
{
temp=p->data;
p->data=t->data;
t->data=temp;
}
p=p->next;
t=t->next;
}
}
return head;
}
Linklist *print(Linklist *head) // 8.Print Linklist.
{
Linklist *p;
p=head->next;
if(p==NULL)
{
printf("Linklist is empty.\n");
}
while(p!=NULL)
{
printf(" %d",p->data);
p=p->next;
}
printf("\n");
return head;
}
int main()
{
return 0;
}
顺序表:
#include <stdio.h>
#include <stdlib.h>
#define Maxsize 100
typedef int dataType;
typedef struct list
{
dataType *elem;
int length;
}sqList;
int create(sqList *L)
{
L->elem=(dataType *)malloc(Maxsize*sizeof(dataType));
if(!L->elem)
{
printf("Space allocation failed!\n");
return;
}
L->length=0;
return;
}
int Get(sqList *L,int i,dataType *value)
{
if(i<0||i>=L->length)
{
printf("Number is out of range!\n");
return;
}
*value=L->elem[i];
return;
}
int seek(sqList *L,dataType value)
{
int i;
for(i=0;i<L->length;i++)
{
if(L->elem[i]==value)
return i;
}
printf("Not found!\n");
return;
}
int insert(sqList *L,int i,dataType value) //"i" is the location ,a[i]
{
int j;
if(i<0||i>Maxsize-1)
{
printf("Inserted location does not exist!\n");
return;
}
if(L->length==Maxsize)
{
printf("Sequential List is Full!\n");
return;
}
if(i<L->length) //"i" belongs to location length.
{
for(j=L->length;j>i-1;j--)
{
L->elem[j+1]=L->elem[j];
L->elem[i]=value;
L->length++;
}
}
else if(i==L->length)
{
L->elem[i]=value;
L->length++;
}
else if(i>L->length)
{
printf("Inserted location does not exist!\n");
return;
}
return;
}
int Delete(sqList *L,int i)
{
int j;
if(i<0||i>=L->length)
{
printf("Delete location does not exist!\n");
return;
}
for(j=i+1;j<L->length;j++)
{
L->elem[j-1]=L->elem[j];
}
L->length--;
return;
}
int traverse(sqList *L)
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d ",L->elem[i]);
}
return;
}
int main()
{
sqList L;
dataType x;
int i,n;
create(&L);
for(i=0;i<10;i++)
insert(&L,i,i*10);
printf("Traverse:");
traverse(&L);
printf("\n");
printf("\n");
Get(&L,2,&x);
printf("Get Location [%d] is %d.\n",2,x);
printf("\n");
printf("Seek:");
printf("Element %d location is [%d].\n",30,seek(&L,30));
printf("\n");
Delete(&L,4);
printf("Delete Location [%d] Element.\n",4);
printf("\n");
printf("Traverse:");
traverse(&L);
printf("\n");
return 0;
}