/*單鏈表的各種操作*/
# define null 0
typedef char elemtype; /* 字元型資料*/
typedef struct lnode
elemtype data;
struct lnode *next;
setnull(struct lnode **p);
int length (struct lnode **p);
elemtype get(struct lnode **p,int i);
void insert(struct lnode **p,elemtype x,int i);
int delete(struct lnode **p,int i);
void display(struct lnode **p);
main()
struct lnode *head,*q; /*定義靜態變數*/
int select,x1,x2,x3,x4;
int i,n;
int m,g;
char e,y;
head=setnull(&head); /*建議鍊錶並設定為空表*/
printf("請輸入資料長度: ");
scanf("%d",&n);
for(i=1;iprintf("將資料插入到單鏈表中: ");
scanf("%d",&y);
insert(&head,y,i);} /*插入資料到鍊錶*/
display(&head); /*顯示鍊錶所有資料*/
printf("select 1 求長度 length()/n");
printf("select 2 取結點 get()/n");
printf("select 3 求值查詢 locate()/n");
printf("select 4 刪除結點 delete()/n");
printf("input your select: ");
scanf("%d",&select);
switch(select)
case 1:
x1=length(&head);
printf("輸出單鏈表的長度%d ",x1);
display(&head);
}break;
case 2:
printf("請輸入要取得結點: ");
scanf("%d",&m);
x2=get(&head,m);
printf(x2);
display(&head);
}break;
case 3:
printf("請輸入要查詢的資料: ");
scanf("%d",&e);
x3=locate(&head,e);
printf(x3);
display(&head);
}break;
case 4:
printf("請輸入要刪除的結點: ");
scanf("%d",&g);
x4=delete(&head,g);
printf(x4);
display(&head);
}break;
setnull(struct lnode **p)
*p=null;
int length (struct lnode **p)
int n=0;
struct lnode *q=*p;
while (q!=null)
n++;
q=q->next;
return(n);
elemtype get(struct lnode **p,int i)
int j=1;
struct lnode *q=*p;
while (jq=q->next;
j++;
if(q!=null)
return(q->data);
else
printf("位置引數不正確!/n");
int locate(struct lnode **p,elemtype x)
int n=0;
struct lnode *q=*p;
while (q!=null&&q->data!=x)
q=q->next;
n++;
if(q==null)
return(-1);
else
return(n+1);
void insert(struct lnode **p,elemtype x,int i)
int j=1;
struct lnode *s,*q;
s=(struct lnode *)malloc(sizeof(struct lnode));
s->data=x;
q=*p;
if(i==1)
s->next=q;
p=s;
else
while(jnext!=null)
q=q->next;
j++;
if(j==i-1)
s->next=q->next;
q->next=s;
else
printf("位置引數不正確!/n");
int delete(struct lnode **p,int i)
int j=1;
struct lnode *q=*p,*t;
if(i==1)
t=q;
*p=q->next;
else
while(jnext!=null)
q=q->next;
j++;
if(q->next!=null&&j==i-1)
t=q->next;
q->next=t->next;
else
printf("位置引數不正確!/n");
if(t=null)
free(t);
void display(struct lnode **p)
struct lnode *q;
q=*p;
printf("單鏈表顯示: ");
if(q==null)
printf("鍊錶為空!");
else if (q->next==null)
printf("%c/n",q->data);
else
while(q->next!=null)
printf("%c->",q->data);
q=q->next;
printf("%c",q->data);
printf("/n");
單鏈表各種操作
終於自己寫出了關於單鏈表的操作,而不是看別人的,現在程式設計越來越有感覺了,自己編更好,別人的還看不懂,不知道他們的思路是什麼 單鏈表的建立,插入,刪除,排序,求長度。插入是按大小順序插入的。include include struct node void creat node void print...
單鏈表的各種操作
單鏈表的各種操作 define null 0 typedef char elemtype 字元型資料 typedef struct lnode setnull struct lnode p int length struct lnode p elemtype get struct lnode p,i...
單鏈表的各種操作
單鏈表的各種操作 define null 0 typedef char elemtype 字元型資料 typedef struct lnode setnull struct lnode p int length struct lnode p elemtype get struct lnode p,i...