線形テーブル内の順次テーブルの基本操作(作成、挿入、削除、出力)および単一リンクリストの基本操作(作成、削除、出力)

単一リンクリスト:(引用を使用、c ++で実行)
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 //最大長typedefstruct
// create
{ int * i; int length; } sqlist ; bool newsqlist(sqlist&L){ Li =(int *)(malloc)(sizeof(int [MAXSIZE])); //スペースを適用if(!Li){ return false; } else { L.length = 0; // returntrueを省略しないように注意してください; } } bool Insert(sqlist&L、int i、int j)// iはアドレス、jは要素{ if(i <1 || i> L.length + 1 ){ return false; )//アドレスエラーif(L.length> = MAXSIZE)//不十分なスペースがfalseを返す;
























for(int j = L.length-1; j> = i-1; j –)//挿入ポイントの後のすべての要素を1単位後方に移動
{ Li [j + 1] = Li [j]; } Li [ i-1] = j; //元の要素を上書きするL.length ++; trueを返す; } bool Get(sqlist L、int i、int&e)// iはアドレス、jは要素、&は参照を表す{ if(i <1 || i> L.length + 1)return false; e = Li [i-1]; //アドレスは1から始まり、添え字は0から始まるので、1を引きます。returntrue ; } bool deletem(sqlist&L、int i){ if(i <1 || i> L.length + 1)return false; else { for(int j = i; j <L.length; j ++){ Li [j- 1] = Li [j]; } L.length–; } return true; }



























int Locate(sqlist L、int i)
{ for(int j = 0; j <L.length; j ++){ if(Li [j] == i){ return j + 1; } } return 0; } int main(){ sqlist L; int l、e、p; if(!newsqlist(L))printf(“ new sqlist failed \ n”); else { printf(“ new sqlist ready \ n”); printf( "長さを入力\ n"); scanf_s( "%d"、&l); printf( "データを入力:\ n"); for(int i = 1; i <= l; i ++){ scanf_s( "%d"、&e); Insert(L、i、e); } printf(“ sqlist is \ n”); for(int i = 1; i <= L.length; i ++)




























{ Get(L、i、e); printf( "%d"、e); } printf( "削除する場所を入力してください:\ n"); scanf_s( "%d"、&l); deletem(L、l); for(int i = 1; i <= L.length; i ++){ Get(L、i、e); printf( "%d"、e); } printf( "\ n検索する要素を入力\ n"); scanf_s( "%d"、&e); p = Locate(L、e); if(!p){ printf( "error"); } else { printf( "%d"、p); } } return 0; }単链表:#include <stdio.h> #include <stdlib.h> struct ListNode { int data;































};
struct ListNode * readlist();
void print(struct ListNode * l);
struct ListNode * deletem(int i、struct ListNode * j);
int main()
{ struct ListNode * l = readlist(); int i; scanf_s( "%d"、&i); l = deletem(i、l); 0を返します。} struct ListNode * readlist(){ struct ListNode * head、* tail、* p; ヘッド= NULL; テール= NULL; while(1){ p =(struct ListNode *)(malloc(sizeof(struct ListNode))); scanf_s( "%d"、&p-> data); if(p-> data == -1)break; p-> next = NULL; } }



















おすすめ

転載: blog.csdn.net/weixin_51235620/article/details/114672849